这些Java教程是为JDK 8编写的。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及其后续版本中更新的语言特性的摘要。
请参阅JDK发行说明,了解所有JDK版本的新功能、增强功能以及已删除或弃用的选项的信息。
JDBC RowSet
对象以比结果集更灵活、更易使用的方式存储表格数据。
Oracle为一些更常用的RowSet
用途定义了五个RowSet
接口,并为这些RowSet
接口提供了标准参考实现。在本教程中,您将学习如何使用这些参考实现。
这些RowSet
接口及其实现是为程序员提供方便而提供的。程序员可以自由编写自己的javax.sql.RowSet
接口版本,扩展这五个RowSet
接口的实现,或者编写自己的实现。然而,许多程序员可能会发现标准参考实现已经满足了他们的需求,因此直接使用它们即可。
本节介绍了RowSet
接口及其扩展接口:
JdbcRowSet
CachedRowSet
WebRowSet
JoinRowSet
FilteredRowSet
本教程涵盖以下主题:
所有RowSet
对象都派生自ResultSet
接口,因此共享它的功能。JDBC RowSet
对象之所以特别,是因为它们添加了以下新功能:
所有RowSet
对象都是JavaBeans组件。这意味着它们具有以下特点:
所有RowSet
对象都具有属性。属性是具有相应的getter和setter方法的字段。属性可以在构建工具(如IDEs JDveloper和Eclipse附带的工具)中暴露,以便您可以可视化地操作bean。更多信息,请参阅Properties教程。
RowSet
对象使用JavaBeans事件模型,在发生某些事件时通知注册的组件。对于所有RowSet
对象,有三个事件会触发通知:
RowSet
内容的更改事件的通知会发送给所有的监听器,也就是已实现RowSetListener
接口并将自身添加到RowSet
对象的通知组件列表中的组件。
监听器可以是GUI组件,比如柱状图。如果柱状图正在跟踪RowSet
对象中的数据,那么当数据发生变化时,监听器希望得到新的数据值。因此,监听器需要实现RowSetListener
方法来定义在特定事件发生时要执行的操作。然后,还必须将监听器添加到RowSet
对象的监听器列表中。以下代码行将柱状图组件bg
注册到RowSet
对象rs
:
rs.addListener(bg);
现在,bg
将在光标移动、行发生变化或rs
获取新数据时收到通知。
一些数据库管理系统不支持可滚动(scrollable)的结果集,有些不支持可更新(updatable)的结果集。如果该数据库管理系统的驱动程序没有添加滚动或更新结果集的能力,您可以使用RowSet
对象来实现。RowSet
对象默认是可滚动和可更新的,因此通过将结果集的内容填充到RowSet
对象中,可以有效地使结果集具有可滚动和可更新的特性。
RowSet
对象可以被认为是连接或断开连接的。一个连接的RowSet
对象使用JDBC驱动程序连接到关系数据库,并在其生命周期内保持该连接。一个断开连接的RowSet
对象仅在从ResultSet
对象读取数据或将数据写回数据源时才与数据源建立连接。在从数据源读取数据或向数据源写入数据后,RowSet
对象会断开与数据源的连接,从而变为"断开连接"。在大部分生命周期中,断开连接的RowSet
对象没有与数据源的连接,并且独立运行。接下来的两节将告诉您在连接或断开连接的情况下,RowSet
对象可以做什么。
标准RowSet
实现中只有一个是连接的RowSet
对象:JdbcRowSet
。作为始终连接到数据库的对象,JdbcRowSet
对象与ResultSet
对象最相似,并经常用作包装器,使原本不可滚动和只读的ResultSet
对象变为可滚动和可更新。
JdbcRowSet
JdbcRowSet
另外四个实现是断开连接的RowSet
实现。断开连接的RowSet
对象具有所有连接的RowSet
对象的功能,还具有仅适用于断开连接的RowSet
对象的其他功能。例如,不需要维护与数据源的连接使得断开连接的RowSet
对象比JdbcRowSet
对象或ResultSet
对象更轻量级。断开连接的RowSet
对象还是可序列化的,并且可序列化和轻量级的组合使其非常适合在网络上发送数据。它们甚至可以用于将数据发送到PDA和移动电话等瘦客户端。
CachedRowSet
接口定义了所有断开连接的RowSet
对象可用的基本功能。其他三个是CachedRowSet
接口的扩展,提供了更专业的功能。以下信息显示了它们的关系:
CachedRowSet
对象具有JdbcRowSet
对象的所有功能,并且还可以执行以下操作:
ResultSet
对象中读取数据并使用该数据填充自身WebRowSet
对象具有CachedRowSet
对象的所有功能,并且还可以执行以下操作:
WebRowSet
对象的XML文档JoinRowSet
对象具有WebRowSet
对象的所有功能(因此也具有CachedRowSet
对象的功能),并且还可以执行以下操作:
SQL JOIN
而无需连接到数据源FilteredRowSet
对象类似地具有WebRowSet
对象的所有功能(因此也是CachedRowSet
对象),并且还可以执行以下操作:
RowSet
对象上执行查询。