1

这个java教程:

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

然后从这个后续的java教程中:

传递 ResultSet 对象

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

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

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

更新:直接引用 JdbcRowSet 接口:

* JdbcRowSet 对象的主要用途之一是使 ResultSet 对象在不具备这些功能时可滚动和可更新。*

从同一个链接引用。

提前致谢。

4

1 回答 1

2

JdbcRowSetImpl是一个相对较薄的 a 包装器Resultset,因此它要求aResultSet也是可滚动的,以便能够提供所需的可滚动性,如果您不想或不能提供可滚动的结果集,您可以使用 a CachedRowSet

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

该教程似乎是矛盾的,因为在介绍了您可以JdbcRowSet用来使结果集可滚动的介绍之后,它指出:

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

(强调我的)

于 2013-06-15T08:01:55.133 回答