四、ResultSet
接口
ResultSet
接口概述
ResultSet
接口是Java JDBC API中的一个核心接口,用于表示从数据库查询返回的结果集。它允许用户遍历查询结果,并从中提取数据。
ResultSet接口代表从数据库查询返回的结果集,它提供了以下功能:
-
遍历结果集:允许用户向前或向后移动指针,以便访问结果集中的每一行。
-
提取数据:允许用户从当前行中提取各种类型的数据(如字符串、整数、日期等)
-
元数据:提供关于结果集的元数据信息,如列的数量和名称等
// 使用方法
// 创建ResultSet
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employees");
// 遍历ResultSet,主要步骤有:
// 1、移动到第一行:使用next()方法将指针移动到第一行
// 2、提取数据:从当前行中提取数据
// 3、移动到下一行:再次使用next()方法移动到下一行
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
Date hireDate = rs.getDate("hire_date");
System.out.println("ID: " + id + ", Name: " + name + ", Hire Date: " + hireDate);
}
ResultSet
接口的主要方法
-
next()
-
作用:将指针移动到结果集的下一行
-
返回值:如果还有下一行,则返回true;否则返回false
-
-
getBoolean(String columnName)
-
作用:从当前行中提取指定列的布尔值
-
参数:columnName是列的名称
-
返回值:该列的布尔值
-
-
getInt(String columnName)
-
作用:从当前行中提取指定列的整型值
-
参数:columnName是列的名称
-
返回值:该列的整型值
-
-
getLong(String columnName)
-
getFloat(String columnName)
-
getDouble(String columnName)
-
getString(String columnName)
-
作用:从当前行中提取指定列的字符串值
-
参数:columnName是类的名称
-
返回值:该列的字符串值
-
-
getDate(String columnName)
-
作用:从当前行中提取指定列的日期值
-
-
getTime(String columnName)
-
作用:从当前行中提取出指定列的时间值
-
-
getTimestamp(String columnName)
-
作用:从当前行中提取列的时间戳值
-
返回值:返回列的时间戳
-
-
wasNull()
-
作用:检查上一次提取的数据是否为null
-
返回值:如果上一次提取的数据为null,则返回true;否则返回false
-
-
close()
-
作用:关闭ResultSet对象
-
返回值:无
-
Java源码解析:
// ResultSet接口定义在java.sql.ResultSet包中,下面是部分源码
public interface ResultSet extends Wrapper, Statement {
// 前进到下一行
boolean next() throws SQLException;
// 获取指定列的布尔值
boolean getBoolean(int columnIndex) throws SQLException;
boolean getBoolean(String columnLabel) throws SQLException;
// 获取指定列的字节值
byte getByte(int columnIndex) throws SQLException;
byte getByte(String columnLabel) throws SQLException;
// 获取指定列的短整型值
short getShort(int columnIndex) throws SQLException;
short getShort(String columnLabel) throws SQLException;
// 获取指定列的整型值
int getInt(int columnIndex) throws SQLException;
int getInt(String columnLabel) throws SQLException;
// 获取指定列的长整型值
long getLong(int columnIndex) throws SQLException;
long getLong(String columnLabel) throws SQLException;
// 获取指定列的浮点型值
float getFloat(int columnIndex) throws SQLException;
float getFloat(String columnLabel) throws SQLException;
// 获取指定列的双精度浮点型值
double getDouble(int columnIndex) throws SQLException;
double getDouble(String columnLabel) throws SQLException;
// 获取指定列的字符串值
String getString(int columnIndex) throws SQLException;
String getString(String columnLabel) throws SQLException;
// 获取指定列的日期值
Date getDate(int columnIndex) throws SQLException;
Date getDate(String columnLabel) throws SQLException;
// 获取指定列的时间值
Time getTime(int columnIndex) throws SQLException;
Time getTime(String columnLabel) throws SQLException;
// 获取指定列的时间戳值
Timestamp getTimestamp(int columnIndex) throws SQLException;
Timestamp getTimestamp(String columnLabel) throws SQLException;
// 获取元数据
ResultSetMetaData getMetaData() throws SQLException;
// 获取警告信息
SQLWarning getWarnings() throws SQLException;
// 清除警告信息
void clearWarnings() throws SQLException;
// 关闭结果集
void close() throws SQLException;
}