一、基础概念:什么是 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()) → 关闭资源