• 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("	"+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 }
     
  • 相关阅读:
    如何搭建企业级中台系统
    Linux上安装git
    Jenkins的CI持续集成
    docker安装jenkins
    在线思维导图网站
    K8s容器编排
    MySQL存储引擎
    tomcat8 进入不了Manager App 界面 403 Access Denied
    IdeaVim-常用操作
    Node.js 安装及环境配置之 Windows 篇
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9983949.html
Copyright © 2020-2023  润新知