Java JDBC – 行集和结果集的区别
结果集特性如下:
- 它维护与数据库的连接,因此无法序列化。
- 它不能通过网络将结果集对象从一个类传递到另一个类。
- ResultSet 对象维护一个指向其当前数据行的游标。最初,光标位于第一行之前。 next 方法将光标移动到下一行,因为当 ResultSet 对象中没有更多行时它返回 false,所以可以在 while 循环中使用它来遍历结果集。
- javax.sql.rowset.RowSet 是一个 ResultSet 的包装器,它使得可以将结果集用作 JDBC Java的 JavaBeans 组件。
- ResultSet 不能单独用作 JavaBeans 组件。
RowSet 特性如下:
- 它是 JDBC ResultSet 的一个断开连接的、可序列化的版本。它还扩展了 ResultSet 接口。
- 行集可以被序列化,因为它没有到任何数据库的连接。
- Row Set 接口提供了一组 JavaBeans 属性,允许将 Row Set 实例配置为连接到 JDBC 数据源并从数据源读取一些数据。一组 setter 方法(setInt、setBytes、setString 等)提供了一种将输入参数传递给行集的命令属性的方法。
- Row Set 接口扩展了Java的ResultSet 接口。
- javax.sql.rowset.JdbcRowSet Row Set 的子类是 ResultSet 的包装器,它使得可以将结果集用作 JavaBeans 组件。
Note: RowSet is alternate to ResultSet but is more effective than ResultSet
现在让我们总结如下区分它们:
RowSet | ResultSet |
---|---|
RowSet is present in the javax.sql package | ResultSet is present in the java.sql package |
A Row Set can be connected, disconnected from the database. | A ResultSet always maintains the connection with the database. |
RowSet is scrollable providing more flexibility | ResultSet by default is always forward only |
A Row Set object can be serialized. | It cannot be serialized. |
You can pass a Row Set object over the network. | ResultSet object cannot be passed other over the network. |
Result Set Object is a JavaBean object. RowSet using the RowSetProvider.newFactory().createJdb cRowSet() method. | Result Set object is not a JavaBean object result set using the executeQuery() method |
ResultSetBy default, RowSet object is scrollable and updatable. | By default, the ResultSet object is not scrollable or, updatable. |