美文网首页
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