Java & MySQL - 结果集



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

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

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

  • 导航方法 - 用于在结果集中移动游标。

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

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

游标是根据 ResultSet 的属性可移动的。这些属性是在创建生成 ResultSet 的相应 Statement 时指定的。

JDBC 提供以下连接方法来创建具有所需 ResultSet 的语句:

  • createStatement(int RSType, int RSConcurrency);

  • prepareStatement(String SQL, int RSType, int RSConcurrency);

  • prepareCall(String sql, int RSType, int RSConcurrency);

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

ResultSet 类型

下面给出可能的 RSType。如果您没有指定任何 ResultSet 类型,则会自动获得一个 TYPE_FORWARD_ONLY 类型。

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

ResultSet 的并发性

下面给出可能的 RSConcurrency。如果您没有指定任何并发性类型,则会自动获得一个 CONCUR_READ_ONLY 类型。

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

我们迄今为止编写的所有示例都可以按如下方式编写,它初始化一个 Statement 对象以创建一个仅向前、只读的 ResultSet 对象:

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