0

这个oracle java 教程:

以下语句指定在调用 commit 方法时关闭从 getPrice 查询生成的 ResultSet 对象的游标。请注意,如果您的 DBM 不支持 ResultSet.CLOSE_CURSORS_AT_COMMIT,则忽略此常量:

getPrice = con.prepareStatement(query, ResultSet.CLOSE_CURSORS_AT_COMMIT);

这是否意味着ResultSet.CLOSE_CURSORS_AT_COMMIT关闭ResultSet?从名称上看,它只是关闭了 ResultSet 的游标。如果是这样的话,它有什么用呢?PS:我知道之后发生的任何事情都会结束con.commit()。但实际上关闭了什么?光标?光标是什么意思?提前致谢。

4

3 回答 3

1

这是javadoc所说的:

指示具有此可保持性的打开的 ResultSet 对象的常量将在提交当前事务时关闭。

所以是的,结果集本身将被关闭。

于 2013-08-18T13:46:21.303 回答
0

The cursor is closed only after call of commit method.

于 2013-08-18T12:56:34.797 回答
0

关于游标:
这里解释一下什么是游标;Wiki 解释什么是与数据库视图中的结果集相关的游标。

从 JDBC 程序员的角度来看:

您可以通过游标访问 ResultSet 对象中的数据。请注意,此游标不是数据库游标。此游标是指向 ResultSet 中的一行数据的指针。最初,光标位于第一行之前。ResultSet.next 方法将光标移动到下一行。如果光标位于最后一行之后,则此方法返回 false。此方法使用 while 循环重复调用 ResultSet.next 方法,以遍历 ResultSet 中的所有数据。


关于 Statement.CLOSE_CURSORS_AT_COMMIT

Statement.CLOSE_CURSORS_AT_COMMIT: 表示当当前事务提交时打开的具有这种可保持性的 ResultSet 对象将被关闭的常量。

调用此方法时关闭游标可以为某些应用程序带来更好的性能。

所以是的,光标将(理论上)关闭;我理论上写是因为

如果您的 DBM 不支持 ResultSet.CLOSE_CURSORS_AT_COMMIT,则忽略此常量

于 2013-08-18T14:43:40.703 回答