美文网首页
JDBC之API详解(Resultset)

JDBC之API详解(Resultset)

作者: 每天起床都想摆 | 来源:发表于2021-12-15 09:33 被阅读0次

    ResultSet

    • ResultSet(结果集对象)作用: 封装了DQL查询语句的结果

      执行DQL语句后,将所得结果封装,并用一个游标进行指向,游标默认指向DQL结果集的第一行,并对当前行进行判断,如果游标所在行被判断存在数据时,将光标下移一行再次进行判断,直到游标所在行被判断出为无效行,当前行没有数据时,游标上移到上一次的有效行,即从起始行(即字段名所在行)开始,到最后一行有效行即为被封装的DQL结果集

      ResultSet stmt.executeQuery(sql): //执行DQL语句,返回ResultSet对象
      
    • 获取查询结果

      boolean next();
      /*
        (1)将光标位置向前移动一行
        (2)判断当前行是否为有效行
        
        返回值:
        (1)有效行,当前行有数据
        (2)无效行,当前行没有数据
      */
      
      xxx   getXxx(参数)  //获取数据
        
      /*
        xxx:数据类型    Xxx为数据类型的封装类型   例如:int getInt(参数);String getString(参数)
        参数:(参数的数据类型)
        int 列的编号,从1开始
        String  列的名称
      */
      

      因为游标始终执行着“”判断—获取数据“,所以对ResultSet的使用要通过循环来操作

    • 使用步骤

      1. 游标向下移动一行,并判断该行是否有数据:next()
      2. 获取数据:getXxx(参数)
      //    循环判断游标是否是最后一行末尾
      
      while(rs.next){
          //    获取数据
          rs.getXxx(参数);
          
      }
      
      import java.sql.*;
      public class JDBCDemo {
          public static void main(String[] args) throws Exception {
              Class.forName("com.mysql.cj.jdbc.Driver");
              String url = "jdbc:mysql://127.0.0.1:3306/school?useSSL = false";
              String username = "root";
              String password = "ZZXQJL@0916.com";
              Connection coon = DriverManager.getConnection(url, username, password);
      
              //定义SQL语句
              String sql = "select * from bank;";
              //获取Statement对象
              Statement stmt = coon.createStatement();
              //执行SQL
              ResultSet rs = stmt.executeQuery(sql);
      
              //处理结果,遍历rs中的所有数据
      
              while(rs.next()){
                  //获取数据  getXxx()
                  String name = rs.getString(1);    //      String name = rs.getString("name");
                  int income = rs.getInt(2);        //      int income = rs.getInt("income");           
                 
                  System.out.println(name + " " +income);
                  
              }
      
              rs.close();
              stmt.close();
              coon.close();
      
          }
      }
      
    • 对查询结果封装(在现实生活中,客户看到的查询结果往往是封装后的结果)

      目标:查询account账户表数据,封装Account对象中,并且储存到ArrayList集合中

    image-20211121224534567.png
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class JDBCDemo {
        public static void main(String[] args) throws Exception {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://127.0.0.1:3306/school?useSSL = false";
            String username = "root";
            String password = "ZZXQJL@0916.com";
            Connection coon = DriverManager.getConnection(url, username, password);
    
            //创建集合
            List<Account> list = new ArrayList<>();
    
            //定义SQL语句
            String sql = "select * from account;";
            //获取Statement对象
            Statement stmt = coon.createStatement();
            //执行SQL
            ResultSet rs = stmt.executeQuery(sql);
    
            //处理结果,遍历rs中的所有数据
    
            while(rs.next()){
                Account account = new Account();
    
                //获取数据  getXxx()
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int money = rs.getInt("money");
    
                //赋值
                account.setId(id);
                account.setName(name);
                account.setMoney(money);
    
                //存入集合
                list.add(account);
    
            }
    
            System.out.println(list);
    
            rs.close();
            stmt.close();
            coon.close();
    
        }
    }
    

    相关文章

      网友评论

          本文标题:JDBC之API详解(Resultset)

          本文链接:https://www.haomeiwen.com/subject/vmerfrtx.html