一、基础概念:什么是 ResultSet?
ResultSet 是 JDBC 中用于接收和处理数据库查询结果的接口,本质是一个 “动态数据表”:
- 包含查询返回的所有行、列数据(如
SELECT * FROM table的结果 )。 - 内部通过游标(类似指针)遍历数据,初始位置在第一行之前。
二、核心用法:如何操作 ResultSet?
1. 获取 ResultSet(执行查询)
通过 Statement 或 PreparedStatement 执行查询,获得结果集:
// 1. 创建 Statement(或 PreparedStatement)
Statement stmt = conn.createStatement();
// 2. 执行查询,返回 ResultSet
ResultSet rs = stmt.executeQuery("SELECT id, name, age FROM users");
2. 遍历结果集(游标移动)
用 next() 方法移动游标,逐行读取数据(next() 返回 true 表示有数据,false 表示遍历结束 ):
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("-----------");}
3. 提取数据(常用方法)
ResultSet 提供了丰富的 getXxx() 方法,根据列类型获取数据:
| 方法 | 作用 | 示例场景 |
|---|---|---|
getInt(String col) | 通过列名 / 索引获取 int 类型 | 读取 id、age 等整数列 |
getString(String col) | 通过列名 / 索引获取 String 类型 | 读取 name、email 等字符串列 |
getDouble(String col) | 通过列名 / 索引获取 double 类型 | 读取 price、score 等浮点数列 |
getDate(String col) | 通过列名 / 索引获取 Date 类型 | 读取 create_time 等日期列 |
wasNull() | 检查上一次获取的数据是否为 NULL | 避免空值导致程序异常 |
4. 关闭资源(必须操作)
查询结束后,需手动关闭 ResultSet(及关联的 Statement、Connection ),释放数据库资源:
总结
ResultSet 是 JDBC 操作查询结果的核心工具,核心流程是:
执行查询 → 遍历游标(next()) → 提取数据(getXxx()) → 关闭资源
