是一个默认情况下可滚动的RowSet对象?

时间:2013-06-15 07:55:13

标签: java jdbc rowset

来自this java教程:

  

默认情况下,RowSet对象是可滚动和可更新的,因此   使用结果集的内容填充RowSet对象,即可   有效地使结果集可滚动和可更新。

然后从this subsequent java教程:

  

传递ResultSet对象

     

创建JdbcRowSet对象的最简单方法是生成一个   ResultSet对象并将其传递给JdbcRowSetImpl构造函数。干   这不仅创建了一个JdbcRowSet对象,而且还填充了它   ResultSet对象中的数据。

     

注意:传递给JdbcRowSetImpl的ResultSet对象   构造函数必须是可滚动的。

如果RowSet对象默认可滚动,为什么结果集需要可滚动? 这不是将ResultSet包装在JdbcRowSet中的主要优势吗?

更新:直接引用JdbcRowSet接口:

  

* JdbcRowSet对象的一个​​主要用途是使ResultSet对象可滚动和可更新,否则它们没有那些   能力。   *

引用相同的link

提前致谢。

1 个答案:

答案 0 :(得分:2)

JdbcRowSetImpl是一个 - Resultset周围相对较薄的包装器,所以它要求ResultSet也可以滚动,以便能够提供所需的可滚动性,如果不这样做的话想要或不能提供可滚动的结果集,您可以使用CachedRowSet

与您链接的教程相反,com.sun.rowset.JdbcRowSetImpl不会将不可滚动的ResultSet转换为可滚动的结果集。实现只是包装ResultSet并直接将调用转发给它,因此如果ResultSet不可滚动,那么JdbcRowSet也不是。同样适用于可更新性。

本教程似乎是矛盾的,因为在介绍之后你可以使用JdbcRowSet使结果集可滚动,它注意到:

  

使用JdbcRowSet对象创建的ResultSet对象充当ResultSet对象的包装器。因为RowSet对象rs是可滚动和可更新的,所以jdbcRs也是可滚动和可更新的。如果您运行方法createStatement没有任何参数, rs将无法滚动或更新,jdbcRs也不会。

(强调我的)