Java 和 MySQL - 结果集


从数据库查询读取数据的 SQL 语句,返回结果集中的数据。SELECT 语句是从数据库中选择行并在结果集中查看它们的标准方法。java.sql.ResultSet接口表示数据库查询的结果集

ResultSet 对象维护一个指向结果集中当前行的游标。术语“结果集”是指 ResultSet 对象中包含的行和列数据。

ResultSet 接口的方法可以分为三类 -

  • 导航方法- 用于移动光标。

  • 获取方法- 用于查看光标指向的当前行的列中的数据。

  • 更新方法- 用于更新当前行列中的数据。然后,这些更新也可以在底层数据库中进行更新。

光标可以根据 ResultSet 的属性进行移动。这些属性是在创建生成 ResultSet 的相应语句时指定的。

JDBC 提供以下连接方法来创建具有所需结果集的语句 -

  • createStatement(int RSType, int RSConcurrency);

  • 准备语句(字符串SQL,int RSType,int RSConcurrency);

  • 准备调用(字符串sql,int RSType,int RSConcurrency);

第一个参数指示 ResultSet 对象的类型,第二个参数是两个 ResultSet 常量之一,用于指定结果集是只读还是可更新。

结果集类型

下面给出了可能的 RSType。如果您未指定任何 ResultSet 类型,您将自动获得 TYPE_FORWARD_ONLY 类型。

类型 描述
结果集.TYPE_FORWARD_ONLY 光标只能在结果集中向前移动。
结果集.TYPE_SCROLL_INSENSITIVE 游标可以向前和向后滚动,结果集对创建结果集后其他人对数据库所做的更改不敏感。
结果集.TYPE_SCROLL_SENSITIVE。 游标可以向前和向后滚动,结果集对创建结果集后其他人对数据库所做的更改很敏感。

结果集的并发

下面给出了可能的 RSConcurrency。如果您未指定任何并发类型,您将自动获得 CONCUR_READ_ONLY 并发类型。

并发性 描述
结果集.CONCUR_READ_ONLY 创建只读结果集。这是默认设置
结果集.CONCUR_UPDATABLE 创建可更新的结果集。

到目前为止我们编写的所有示例都可以写成如下,它初始化一个 Statement 对象来创建一个只进、只读的 ResultSet 对象 -

try(
   Statement stmt = conn.createStatement(
      ResultSet.TYPE_FORWARD_ONLY,
      ResultSet.CONCUR_READ_ONLY);)
}
catch(Exception ex) {
   ....
}
finally {
   ....
}