JDBC课程3--通过ResultSet执行查询操作

内容: 

ResultSet 结果集,封装了使用JDBC 进行查询;JDBCTools.release(rs,st, conn); 这个模块进行了更新, 同时结束的时候也关闭ResultSet,结束该资源占用.

笔记以及代码

package day_18;

import org.junit.Test;

import java.sql.*;
import java.sql.ResultSet;
import java.sql.Statement;

/**ResultSet 结果集,封装了使用JDBC 进行查询
 *  1.调用Statement 对象的executequery(sql)可以得到结果集
 *  2.ResultSet : 返回的实际上就是一张数据表,
 *      有一个指针指向数据表的第一行的前面,可以调用next方法检测下一行是否有效。
 *      若有效,该方法返回true,且指针下移,
 *      相当于Iterator 对象的hasNext()和next()方法的结合体
 *  3.可以通过调用指针定位到一行时,可以通过调用getXXX(index)或getXXX(col'sname)
 *      获取每一列的值,例如:getInt(1),getString("name")
 *  4.ResultSet 当然需要关闭。
 */
public class testResultSet {
    @Test /*目标:获取id=4 的customers 数据表的记录,并打印*/
    public void testResultSet01() throws Exception{
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        try {
            //1.获取Connection
            conn=JDBCTools.getConnection();
            //2.获取Statement
            st=conn.createStatement();
            //3.准备SQL
            String sql="select * from customers";
            //4.执行select查询,得到ResultSet
            rs=st.executeQuery(sql);
            //5. ResultSet处理全部的表的信息
            while(rs.next()){
                int id=rs.getInt(1);
                String name=rs.getString("name");
                String email=rs.getString(3);
                Date birth=rs.getDate(4);
                System.out.println(id);
                System.out.print("\t"+name);
                System.out.print("\t"+email);
                System.out.print("\t"+birth);
            }
            //6.关闭数据库资源
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCTools.release(rs,st, conn);
        }
    }
}

 

可释放ResultSet的JDBCTools 的工具类:
 1 package day_19;
 2 import java.io.InputStream;
 3 import java.sql.*;
 4 import java.util.Properties;
 5 
 6 /**操纵JDBC的工具类, 其中封装了一些工具方法
 7  * Version 1 : getConnection() : 通过读取配置文件从数据库服务器获取一个连接;
 8  * Version 2 :  release() : 关闭数据库资源的ResultSet/Statement/Statement
 9  */
10 public class JDBCTools {
11     public static void release(ResultSet rs,Statement statement, Connection  conn){
12         if(rs!=null){
13             try {
14                 rs.close();
15             } catch (SQLException e) {
16                 e.printStackTrace();
17             }
18         }
19         if(statement!=null){
20             try {
21                 statement.close();
22             } catch (SQLException e) {
23                 e.printStackTrace();
24             }
25         }
26         if(conn!=null){
27             try {
28                 conn.close();
29             } catch (SQLException e2) {
30                 e2.printStackTrace();
31             }
32         }
33     }
34     public static void release(Statement statement,Connection conn){
35         if(statement!=null){
36             try {
37                 statement.close();
38             } catch (SQLException e) {
39                 e.printStackTrace();
40             }
41         }
42         if(conn!=null){
43             try {
44                 conn.close();
45             } catch (SQLException e2) {
46                 e2.printStackTrace();
47             }
48         }
49     }
50     public static Connection getConnection() throws Exception{
51         //1.准备数据库的连接的四个字符串
52         String driverClass=null,jdbcUrl=null,user=null,password=null;
53         //jdbc:mysql:///books   ;也可以将localhost省略掉!
54         //2.读取类路径下的jdbc.properties 文件
55         InputStream in=
56                 JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");
57         Properties properties =new Properties();
58         properties.load(in);
59         driverClass =properties.getProperty("driver");
60         jdbcUrl=properties.getProperty("jdbcUrl");
61         user = properties.getProperty("user");
62         password = properties.getProperty("password");
63         //3.加载数据库驱动程序(注册驱动),driver对应的实现类中有注册驱动的静态代码块
64         // Class.forName(driverClass);  //
65         //或这么手动加载,也可以注册多个数据库连接的代码块
66         //DriverManager.registerDriver( Class.forName(driverClass).newInstance());
67 
68         //4.通过DriverManager 的getConnection()方法获取数据库连接。
69         Connection connection=DriverManager.getConnection(jdbcUrl,user,password);
70         System.out.print(connection);   //com.mysql.jdbc.JDBC4Connection@19e1023e
71 
72         return connection;
73     }
74 
75 }

 

 

 

posted @ 2018-11-19 16:47  山枫叶纷飞  阅读(290)  评论(0编辑  收藏  举报