内容:
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(" "+name); System.out.print(" "+email); System.out.print(" "+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 }