JDBC:通过 ResultSet 执行查询操作

本文内容大多基于官方文档和网上前辈经验总结,经过个人实践加以整理积累,仅供参考。


1 ResultSet 简介

(1) ResultSet:结果集,封装了使用 JDBC 进行查询的结果

(2) 通过调用 Statement 对象的 executeQuery(sql) 方法创建该对象

(3) ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商实现

(4) ResultSet 对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行,如果下一行有效则返回 true,否则返回 false,相当于 Iterator 的 hasNext() 和 next() 方法的结合体

(5) 当指针(游标)指向一行时,可以通过用 getXXX(index) 或 getXXX(columnName) 获取每一列的值,index 从 1 开始,如 getInt(1),getString(“name”)

(6) ResultSet 也需要关闭

2 因为 ResultSet 也需要关闭,所以 JDBC 工具类释放数据库资源的方法需要重构

参看:JDBC:通过 Statement 执行更新操作

/**
 * 关闭数据库连接资源
 */
public static void release(ResultSet rs, Statement stmt, Connection conn) {
    if (rs != null) {
        try {
            rs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    if (stmt != null) {
        try {
            stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3 准备测试数据

这里写图片描述

4 编写单元测试

(1) 获取单一记录

@Test
public void testResultSet() {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        // 获取Connection
        conn = JDBCTool.getConnection();
        // 获取Statement
        stmt = conn.createStatement();
        // 准备SQL
        String sql = "SELECT id, name, email, birth FROM person WHERE id=1";
        // 执行查询得到 ResultSet
        rs = stmt.executeQuery(sql);
        // 处理ResultSet
        if (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.println(name);
            System.out.println(email);
            System.out.println(birth);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JDBCTool.release(rs, stmt, conn);
    }
}

运行结果:
这里写图片描述

(2) 获取多条记录

@Test
public void testResultSet2() {
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        // 获取Connection
        conn = JDBCTool.getConnection();
        // 获取Statement
        stmt = conn.createStatement();
        // 准备SQL
        String sql = "SELECT id, name, email, birth FROM person";
        // 执行查询得到 ResultSet
        rs = stmt.executeQuery(sql);
        // 处理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.println(name);
            System.out.println(email);
            System.out.println(birth);
            System.out.println();
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JDBCTool.release(rs, stmt, conn);
    }
}

运行结果:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
jdbc:mysql8.0.29驱动是用于连接Java应用程序与MySQL数据库之间的驱动程序。MySQL是一个流行的开源关系型数据库管理系统,而JDBC(Java Database Connectivity)是Java提供的一种用于连接和操作数据库的API。 该驱动程序版本号为8.0.29,表示它是MySQL驱动程序的第8版,并且在这个版本中进行了一些更新和改进。这个驱动程序允许Java应用程序与MySQL 8.0.29版本进行通信,以进行数据的读取、写入和修改等操作。 这个驱动程序是通过在Java应用程序中加载对应的类库实现的。在使用它之前,首先需要在项目中引入驱动程序的相关依赖,并加载驱动程序的类。一旦加载了驱动程序,就可以使用Java代码与MySQL数据库建立连接,并执行各种SQL语句来操作数据库。 使用jdbc:mysql8.0.29驱动时,可以通过连接字符串指定要连接的MySQL数据库的URL、用户名和密码。可以创建Connection对象来表示与数据库的连接,通过这个对象可以创建Statement或PreparedStatement对象来执行SQL查询或更新语句。执行查询语句时,可以使用ResultSet对象来获取查询结果。 此外,这个驱动程序还提供了一些其他的特性和方法,用于设置连接属性、事务管理、数据库元数据获取等操作。在编写Java程序时,可以根据具体的需求和操作来使用这些特性和方法。 总之,jdbc:mysql8.0.29驱动是用于在Java应用程序中连接和操作MySQL 8.0.29数据库的驱动程序,它提供了一组API和功能,使得Java开发人员可以方便地与MySQL数据库进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又言又语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值