2013-08-18 69 views
0

this预言Java教程:关闭ResultSet的游标?

以下语句指定当提交 方法被称为从用getPrice查询生成的ResultSet 对象的光标被关闭。请注意,如果你的DBMS不支持 ResultSet.CLOSE_CURSORS_AT_COMMIT,那么这个常数被忽略:

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

这是否意味着ResultSet.CLOSE_CURSORS_AT_COMMIT关闭ResultSet? 从名称看来,它只是关闭了ResultSet的cursore。如果是这种情况会有什么用? PS:我知道在con.commit()之后会发生什么事情。但是实际上什么关闭?光标?光标是什么意思? 在此先感谢。

回答

1

这里是the javadoc说:

表明当前事务时将提交与此可保存性的打开的ResultSet对象将被关闭的常量。

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

0

只有在提交方法调用后,光标才会关闭。

+0

我明白,但为什么仅关闭游标?它的范围是什么?这是否意味着关闭整个结果集? – Rollerball

+0

嗨,在这种情况下,如果您调用commit,那么整个结果集将会关闭(在您调用commit()方法之后),并且您无法再读取它。 – IBJ

+0

那么他们为什么不说ResultSet,但光标.. – Rollerball

0

关于光标:
Here对光标是什么的解释; Wiki解释什么是与数据库视图结果集相关的游标。

从JDBC程序员视图:

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


关于Statement.CLOSE_CURSORS_AT_COMMIT

Statement.CLOSE_CURSORS_AT_COMMIT:这表明当 提交当前事务与此可保存性的打开 ResultSet对象将被关闭的常量。

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

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

,如果你的DBMS不支持ResultSet.CLOSE_CURSORS_AT_COMMIT,然后 这个常数被忽略