关闭ResultSet的光标?

时间:2013-08-18 12:48:53

标签: java jdbc io transactions

来自this oracle java教程:

  

以下语句指定ResultSet的游标   从getPrice查询生成的对象在提交时关闭   方法被调用。请注意,如果您的DBM不支持   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()之后发生的任何事情的结束。但实际上是什么关闭?光标?光标是什么意思? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

以下是the javadoc所说的内容:

  

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

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

答案 1 :(得分:0)

只有在调用commit方法后才关闭游标。

答案 2 :(得分:0)

关于光标:
Here解释什么是光标; 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,那么   忽略这个常数