Result API的功能和小案例

该文章演示了如何在Java中使用JDBC进行数据库查询,通过Result集的next()方法遍历查询结果,获取每行数据的int、String类型字段,并封装到Account对象中,最后将Account对象存储到ArrayList集合中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Result有两个功能,作用都是获取查询结果

(一)next()

(1)将光标向下移动一行

(2)判断当前行是否有效

返回值:

true:有效行,当前行有数据

false:无效行,当前行没有数据

(二)xxx getXxx(参数)---获取数据

xxx:数据类型 如 int getInt(参数)

String getString(参数)

参数:int:列的编号从1开始

String:列名

//判断循环游标是否为最后一行
while(rs.next()){
rs.getXxx(参数);//获取数据
}

运用此性质遍历数据库数据表的全部数据

@Test
    public void testResult() throws Exception {
        //1.注册驱动
        // Class.forName("com.mysql.jdbc.Driver");
        //2.获取链接

        String url="jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false";
        String username = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url,username,password);
        //3.定义sql
         String sql = "select *from account";
         //4.获取执行对象
        Statement stmt =conn.createStatement();
        // 5.执行sql
        ResultSet rs = stmt.executeQuery(sql);
        // 6. 处理结果,遍历rs(参数为int)
        //6.1 光标向下移动一行,并且判断是否有数据
        while(rs.next()){
            int id = rs.getInt(1);
            String name = rs.getString(2);
            double money = rs.getDouble(3);
            //遍历数据


            System.out.println(id);
            System.out.println(name);
            System.out.println(money);
            System.out.println("-------------------");
        }
        // 6. 处理结果,遍历rs(参数为String)
        //6.1 光标向下移动一行,并且判断是否有数据
        while(rs.next()){
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double money = rs.getDouble("money");
            //遍历数据


            System.out.println(id);
            System.out.println(name);
            System.out.println(money);
            System.out.println("-------------------");
        }
        //7.释放资源
        rs.close();
        stmt.close();
        conn.close();
    }

案例--查询account内的数据,封装在Account对象中,并存储在ArrayList集合中

  1. 定义实体类Account

  1. 查询数据,封装到Account

  1. 将Account封装到Arraylist中

开始第一步--定义实体类Account

1.新建包存放类,包名为com.wkw.pojo

2.新建Java类,类名为Account

3.在类中定义列名-id account money

4.生成getter 和setter方法

tips--按住shift选择第一个再选择最后一个完成全选

在下方空白位置生成toString()方法

Account类生成完毕


开始第二步--查询数据,封装到Account

 while(rs.next()){
            Account account = new Account();
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double money = rs.getDouble("money");
            //封装

            account.setId(id);
            account.setName(name);
            account.setMoney(money);
}

开始第三步--将Account封装到Arraylist中

//创建集合
        List<Account> list=new ArrayList<>();
 while(rs.next()){
            Account account = new Account();
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double money = rs.getDouble("money");
            //赋值

            account.setId(id);
            account.setName(name);
            account.setMoney(money);
            //存入集合
            list.add(account);
        }

完成--完整代码如下

 @Test
    public void testResult2() throws Exception {
        //1.注册驱动
        // Class.forName("com.mysql.jdbc.Driver");
        //2.获取链接

        String url="jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false";
        String username = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url,username,password);
        //3.定义sql
        String sql = "select *from account";
        //4.获取执行对象
        Statement stmt =conn.createStatement();
        // 5.执行sql
        ResultSet rs = stmt.executeQuery(sql);
        //创建集合
        List<Account> list=new ArrayList<>();

        // 6. 处理结果,遍历rs
        //6.1 光标向下移动一行,并且判断是否有数据
        while(rs.next()){
            Account account = new Account();
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double money = rs.getDouble("money");
            //赋值

            account.setId(id);
            account.setName(name);
            account.setMoney(money);
            //存入集合
            list.add(account);
        }
        System.out.println(list);
        //7.释放资源
        rs.close();
        stmt.close();
        conn.close();
    }
}

输出结果为

[Account{id=1, name='张三', money=2000.0}, Account{id=2, name='李四', money=2000.0}]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值