Java 和 MySQL - ResultSet
从数据库查询中读取数据的 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.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 { .... }