`

java 代码笔记 2010-06-23 对ResultSet()的几个常用操作,实例。

阅读更多

/*注意:

红字字体那儿是一些路问题,还有mysql的user和password。这个可能大家都不一样,所以需要相应的修改。


知识点:

一,JDBC 连接,操作数据库

二,ResultSet()几个常用的操作

三,mysql中 bolb类型,存入图片+获取图片

四,JDBC 批处理。

 

*/

 

 

package test20100623_resultset_blob;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class jay_x_resultset_method {

    Properties p2 = new Properties();

    void connect_properties() {
        FileInputStream inputFile;
        try {
            inputFile = new FileInputStream(
                    "src/test20100623_resultset_blob/p2.properties");


            try {
                p2.load(inputFile);
            } catch (IOException e) {
                //
                e.printStackTrace();
            }
        } catch (FileNotFoundException e2) {
            //
            e2.printStackTrace();
        }
    }

    public String getValue(String key) {
        if (p2.containsKey(key)) {
            String value = p2.getProperty(key);// 得到某一属性的值
            return value;
        } else
            return "没有该属性";
    }

    public Connection getConnection2() {
        String url = "jdbc:mysql://localhost:3306/test_jdbc?useUnicode=true&characterEncoding=gbk";
        this.connect_properties();
        String user = this.getValue("user");
        String DbPassword = this.getValue("password");

        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, DbPassword);
        } catch (SQLException e) {
            System.out.println("SQL 异常");
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            System.out.println("数据库没有找到");
            e.printStackTrace();
        }
        return conn;
    }

    public void getAllStudent_info() {
        Connection conn = this.getConnection2();
        Statement comm = null;
        ResultSet rs;
        try {
            comm = conn.createStatement();

            String sql2 = "select * from student";
            rs = comm.executeQuery(sql2);
            while (rs.next()) {
                String name = rs.getString("sname");
                System.out.print(name);
                System.out.println("  rs.getRow():" + rs.getRow());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void test_ResultSet() {
        Connection conn = this.getConnection2();
        Statement comm = null;
        ResultSet rs;
        try {
            comm = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);

            String sql2 = "select * from student";
            rs = comm.executeQuery(sql2);

            rs.next();
            if (rs.isFirst()) {
                System.out.println("当前是第一行");
            }
            rs.absolute(5);
            String name = rs.getString("sname");
            System.out.println("rs.absolute(5):" + name);
            System.out.println("rs.getRow():当前的行数" + rs.getRow());
 
            rs.last();
            System.out.println("ResultSet的总大小大小" + rs.getRow());
            if (rs.last()) {
                System.out.println("当前是最后一行");
            }
            System.out.println("ResultSet获取大小:"+rs.getFetchSize());
            System.out.println("rs.getRow():当前的行数" + rs.getRow() + " name:"
                    + rs.getString("sname") + "编号 "
                    + String.valueOf(rs.getInt("sid")));

            System.out.println("修改信息:");

            rs.first();
            // rs.moveToInsertRow();//把这句话 注释掉了后,就能实现了数据库数据的更新。
            rs.updateString("sname", "科比");
            rs.updateRow();
            rs.moveToCurrentRow();

            System.out.println("当前的行数" + rs.getRow() + " name:"
                    + rs.getString("sname") + "编号 "
                    + String.valueOf(rs.getInt("sid")));
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void test_Batch() {
        Connection conn = this.getConnection2();
        Statement comm = null;
        try {
            comm = conn.createStatement();
            String sql2 = "insert into student values('11','易建联','9')";
            String sql = "delete from student where sid=11";
            comm.addBatch(sql);
            comm.addBatch(sql2);
            int[] results = comm.executeBatch();
            // 批处理。一次执行多个sql语句,提高效率。减少读取磁盘的次数。
            for (int i = 0; i < results.length; i++) {
                System.out.println(results[i]);// 影响的行数
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

    // 往数据库存入图片。
    public void test_image() {
        Connection conn = this.getConnection2();
        String s = "src/test20100623_resultset_blob/湖人队标.png";
       
        //String s = "src/test20100623_resultset_blob/2560-1600-8.jpg";
        /*
         * Packet for query is too large (3859293 > 1048576). You can change
         * this value on the server by setting the max_allowed_packet' variable.
         */   
       
        // String sql = "insert into image_blob(image) values(?) ";
        String sql = "insert into image_blob values(?,?) ";
        File file = new File(s);
        FileInputStream fis = null;
        BufferedInputStream bis = null;

        try {
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
        } catch (FileNotFoundException e1) {

            e1.printStackTrace();
        }
        PreparedStatement pstmt = null;
        try {
            pstmt = conn.prepareStatement(sql);
            try {
                pstmt.setInt(1, 4);
                //Duplicate entry '2' for key 1
                pstmt.setBinaryStream(2, bis, bis.available());
                pstmt.execute();
            } catch (IOException e) {

                e.printStackTrace();
            }

        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

    // 把一个 InputStream的内容传递到FileOutputStream里面。
    public void read_blob() {
        Connection conn = this.getConnection2();
        Statement comm = null;
        String s = "src/test20100623_resultset_blob/湖人队标2.png";
        String sql = "SELECT * FROM image_blob;";
        Blob b;
        File file = new File(s);
        FileOutputStream fos = null;
       
        InputStream is = null;
        InputStreamReader isr=null;
        BufferedInputStream bis = null;   
        BufferedReader br=null;
        ResultSet rs;
        try {
            comm = conn.createStatement();
            rs = comm.executeQuery(sql);
            rs.next();
            b = rs.getBlob(2);
            /* java.sql.SQLException: Before start of result set */
            is = b.getBinaryStream();
            bis=new BufferedInputStream(is);
           
            isr=new InputStreamReader(is);
            br=new BufferedReader(isr);
            //br.readLine();
           
            // 从数据库 获取到了 图片 InputStream类型的。
            try {
                fos = new FileOutputStream(file);
                byte[] buf = new byte[2048];

                // 从 图片 InputStream里读出 字节。
                int num = 0;
                try {
                    num = is.read(buf);
                } catch (IOException e) {

                    e.printStackTrace();
                }
                while (num != (-1)) {// 是否读完所有数据
                    try {
                        fos.write(buf, 0, num);
                        // 写入
                    }
catch (IOException e) {

                        e.printStackTrace();
                    }// 将数据写往文件
                    try {
                        num = is.read(buf);
                    } catch (IOException e) {

                        e.printStackTrace();
                    }// 继续从网络中读取文件
                }
            } catch (FileNotFoundException e) {

                e.printStackTrace();
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        jay_x_resultset_method a = new jay_x_resultset_method();
        a.getAllStudent_info();
        a.test_ResultSet();
        a.getAllStudent_info();
        a.test_Batch();
        a.test_image();
        a.read_blob();
    }

}

/*

drop database test_jdbc;
create database test_jdbc;
use test_jdbc;

create table student
(sid int not null,
sname varchar(50),
spassword varchar(20),
primary key(sid)
);

insert into student values('1','科比','24');
insert into student values('2','加内特','5');
insert into student values('3','艾弗森','23');

insert into student values('11','德罗巴','24');
insert into student values('12','罗尼','5');
insert into student values('13','克里斯蒂亚诺 诺那尔多','23');
insert into student values('21','梅西','24');
insert into student values('22','比利亚','5');
insert into student values('23','哈维','23');
insert into student values('31','麦孔','24');
insert into student values('32','埃弗拉','5');
insert into student values('33','费尔南德斯','23');
insert into student values('41','维迪奇','24');
insert into student values('42','卡西利亚斯','5');

insert into student values('43','詹姆斯','23');
insert into student values('51','韦德','24');
insert into student values('52','姚明','5');
insert into student values('53','邓肯','23');

*/

/*

以上是我最近学习Java记录的笔记和自己参照书本和老师所讲编写的 代码和注释。

有错误的地方,希望大家帮我指出。然后
1422942883 这是我的QQ,欢迎各位学习编程的同学加我好友,

或者给我的个人主页留言 (http://jayxigua.iteye.com/),一起讨论,学习。呵呵。

*/

 

1
0
分享到:
评论

相关推荐

    java开发笔记.doc

    这份"java开发笔记.doc"文档涵盖了几个关键的Java Web开发技术,包括Servlet、JDBC、Hibernate以及Struts 1.X,还有JavaScript的基础知识。以下是对这些知识点的详细解释: 1. **Servlet**:Servlet是Java EE平台中...

    配套学习资料:Java开发 - 尚硅谷JDBC学习笔记

    在实际操作中,学习JDBC主要包括以下几个步骤: 1. **建立数据库连接**:使用DriverManager.getConnection()方法,需要提供数据库URL、用户名和密码。 2. **创建Statement或PreparedStatement对象**:Statement用于...

    java笔记.rar

    让我们通过以下几个关键知识点来深入探讨Java: 1. **Java简介**:Java是由Sun Microsystems(现为Oracle公司)于1995年发布的面向对象的编程语言。它的设计目标是“一次编写,到处运行”,通过Java虚拟机(JVM)...

    java web 笔记

    在Java Web开发中,我们常常会涉及到以下几个关键知识点: 1. JSP基础: - `&lt;%@ %&gt;` 指令:这是JSP的指令标签,用于引入Java类或者设置页面属性。 - `&lt;% %&gt;`:小脚本,可以在这里编写Java代码,直接执行。 - `&lt;%...

    JAVA-JDBC-DbUtils教程简单到精通!

    Java JDBC (Java Database Connectivity) 是Java平台中用于与数据库交互的标准API,它允许Java程序员使用SQL语句来访问和操作数据库。DbUtils是Apache Commons的一个模块,它为JDBC提供了一个简单实用的工具库,旨在...

    java 笔记 JDBC

    无状态Bean每次请求都会创建一个新的实例,而有状态Bean会在整个会话期间保持状态。 2. **Entity Beans**:代表持久化的数据,实现了对象/关系映射(O/R Mapping),与数据库表对应。它们的生命周期与数据库记录...

    Java数据库的学习笔记.pdf

    Java数据库连接(JDBC)是Java程序访问数据库的标准接口,它允许Java应用程序通过Java代码执行SQL语句,从而实现对数据库的读写操作。本学习笔记主要介绍了使用Java连接Microsoft SQL Server数据库并进行数据查询的...

    java经典笔记

    在探讨《Java经典笔记》这一主题时,我们深入解析了几个关键知识点,这些知识点涵盖了Servlet容器、类加载路径、数据库连接、以及Java图形用户界面(GUI)编程中的文本绘制等重要概念。 ### 1. ServletContext与...

    java视频教程完整版.zip

    Java视频教程通常会涵盖以下几个关键部分: 1. **环境搭建**:包括下载JDK(Java Development Kit),配置JAVA_HOME环境变量,以及设置PATH和CLASSPATH,这些都是初学者需要掌握的基础步骤。 2. **基础语法**:...

    JDBC数据库连接笔记

    在JDBC中,有几个核心接口和类: 1. `Driver`接口:定义了数据库驱动程序的规范,每个数据库厂商都需要为其数据库实现这个接口。 2. `DriverManager`类:管理数据库驱动程序,负责加载和注册数据库驱动,建立与...

    jdbc.rar_java jdbc_达内

    JDBC学习笔记通常会涵盖以下几个关键知识点: 1. **JDBC基础概念**:JDBC是Sun Microsystems开发的Java API,它为Java程序员提供了一种标准的、通用的接口,用于与不同的数据库系统通信。JDBC允许开发者执行SQL语句...

    基于java记账管理系统.zip

    在【源代码】部分,我们可以期待看到以下几个关键模块的代码: 1. 数据库连接模块:这部分通常使用JDBC(Java Database Connectivity)来实现,包括数据库的连接、查询、插入、更新和删除操作。可能使用了...

    我的JDBC课堂笔记

    ### 我的JDBC课堂笔记 #### 第一章:JDBC 概述 - **ODBC**:全称为 Open Database Connectivity(开放数据库互连),是由微软提出的用于 C 程序与不同数据库进行通信的标准接口。它使得 C 程序能够通过标准的方式...

    Java的2本经典

    这本书涵盖了以下几个关键知识点: 1. **Java基础**:包括Java的历史、环境配置、程序结构、基本数据类型、变量、运算符、流程控制语句(如if-else、switch、for、while)等。 2. **面向对象编程**:深入讲解类、...

    jdbc学习笔记

    - 使用单例模式确保只有一个实例存在。 - 在静态代码块中自动注册 MySQL JDBC 驱动。 - 提供 `getConnection()` 方法获取数据库连接。 - 提供 `free()` 方法来关闭所有的资源。 通过这种方式,可以更方便地在项目中...

    springmybatis

    下面对这几个配置文件解释下: 1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 ...

Global site tag (gtag.js) - Google Analytics