Java ResultSet接口的用法(附带实例)
Java 程序中,ResultSet 是用于存储查询结果的接口。
在 SQL 语句中,select 语句可以查询数据库中的结果,查询的结果都需要使用 ResultSet 接口进行接收并展示,如下图所示:

图 1 查询过程
在前文已经讲解过数据库的新增操作,如果现在进行数据库查询操作,可以使用 PreparedStatement 接口中的 executeQuery() 方法完成,该方法返回值类型是 ResultSet 接口的对象,里面存放 SQL 的查询结果。
ResultSet 接口常用的操作方法如下表所示:
ResultSet 对象使用完成之后需要关闭,关闭的方式和 Connection 接口、Statement 接口一样。这段代码在后面也会使用,所以将其提取到公共代码 BaseDAO 类的 closeAll() 方法中,代码如下:
接下来,通过案例来演示 ResultSet 接口的使用:
ResultSet 接口的 next() 方法的作用是将光标从当前位置向下移动一行。光标最初位于第 1 行之前,第 1 次调用 next() 方法使第 1 行成为当前行,第 2 次调用 next() 方法使第 2 行成为当前行,依此类推。通过循环获取所有数据行即可将数据库中的所有的数据获取出来,当所有的行循环完之后,next() 方法会返回 false,从而退出循环。
在 SQL 语句中,select 语句可以查询数据库中的结果,查询的结果都需要使用 ResultSet 接口进行接收并展示,如下图所示:

图 1 查询过程
在前文已经讲解过数据库的新增操作,如果现在进行数据库查询操作,可以使用 PreparedStatement 接口中的 executeQuery() 方法完成,该方法返回值类型是 ResultSet 接口的对象,里面存放 SQL 的查询结果。
ResultSet 接口常用的操作方法如下表所示:
| 方法 | 方法描述 |
|---|---|
| int getInt(int columnIndex) throws SQLException | 以整数形式按列的编号取得指定列的内容 |
| int getInt(String columnName) throws SQLException | 以整数形式取得指定列的内容 |
| float getFloat(int columnIndex) throws SQLException | 以浮点数的形式按列的编号取得指定列的内容 |
| Float getFloat(String columnName) throws SQLException | 以浮点数的形式取得指定列的内容 |
| String getString(int columnIndex) throws SQLException | 以字符串的形式按列的编号取得指定列的内容 |
| String getString(String columnName) throws SQLException | 以字符串的形式取得指定列的内容 |
| Date getDate(int columnIndex) throws SQLException | 以Date的形式按列的编号取得指定列的内容 |
| Date getDate(String columnName) throws SQLException | 以Date的形式取得指定列的内容 |
ResultSet 对象使用完成之后需要关闭,关闭的方式和 Connection 接口、Statement 接口一样。这段代码在后面也会使用,所以将其提取到公共代码 BaseDAO 类的 closeAll() 方法中,代码如下:
package com.aaa.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDAO {
// 定义MySQL的数据库驱动程序
public static final String DRIVER = "com.mysql.jdbc.Driver";
// 数据库连接字符串
public static final String URL = "jdbc:mysql://school?useUnicode=true&characterEncoding=utf-8";
public static final String USER = "root"; // 数据库服务器账号
public static final String PWSD = "root"; // 数据库服务器密码
// 数据库连接方法
public static Connection getConnection() {
Connection con = null;
try {
Class.forName(DRIVER); // 加载驱动类
con = DriverManager.getConnection(URL, USER, PWSD); // 获取连接
} catch (ClassNotFoundException e) {
System.out.println("加载失败"); // 如果有异常会执行
e.printStackTrace();
} catch (SQLException e) {
System.out.println("连接数据库错误");
e.printStackTrace();
}
return con;
}
public static void closeAll(Connection con, Statement stmt, ResultSet resultSet) {
try {
if (resultSet != null) {
resultSet.close();
System.out.println("关闭resultSet");
}
// 此处省略Connection、Statement的关闭方法
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
接下来,通过案例来演示 ResultSet 接口的使用:
import com.aaa.util.BaseDAO;
import java.sql.*;
public class Demo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
try {
conn = BaseDAO.getConnection();
String sql = "select id,name,gender,age from students";
statement = conn.prepareStatement(sql);
// 执行数据库查询操作,并实例化ResultSet对象
resultSet = statement.executeQuery();
// 拿到实例化对象之后对结果进行打印
while (resultSet.next()) {
// 指针下移
int id = resultSet.getInt("id");
// 获取id内容
String name = resultSet.getString("name");
// 获取name内容
String gender = resultSet.getString("gender");
// 获取性别内容
int age = resultSet.getInt("age");
// 获取年龄内容
System.out.print("获取到的id值:" + id + " ");
System.out.print("获取到的name值:" + name + " ");
System.out.print("获取到的gender值:" + gender + " ");
System.out.print("获取到的age值:" + age + " ");
System.out.println(); // 换行
}
} catch (Exception e) {
e.printStackTrace();
} finally {
BaseDAO.closeAll(conn, statement, resultSet);
}
}
}
程序的运行结果如下:
获取到的id值:1 获取到的name值:张三 获取到的gender值:男 获取到的age值:18
获取到的id值:2 获取到的name值:李四 获取到的gender值:男 获取到的age值:20
ResultSet 接口的 next() 方法的作用是将光标从当前位置向下移动一行。光标最初位于第 1 行之前,第 1 次调用 next() 方法使第 1 行成为当前行,第 2 次调用 next() 方法使第 2 行成为当前行,依此类推。通过循环获取所有数据行即可将数据库中的所有的数据获取出来,当所有的行循环完之后,next() 方法会返回 false,从而退出循环。
ICP备案:
公安联网备案: