文档

Java™教程
隐藏目录
使用RowSet对象
路径: JDBC数据库访问
课程: JDBC基础知识

使用RowSet对象

JDBC RowSet对象以比结果集更灵活、更易使用的方式存储表格数据。

Oracle为一些更常用的RowSet用途定义了五个RowSet接口,并为这些RowSet接口提供了标准参考实现。在本教程中,您将学习如何使用这些参考实现。

这些RowSet接口及其实现是为程序员提供方便而提供的。程序员可以自由编写自己的javax.sql.RowSet接口版本,扩展这五个RowSet接口的实现,或者编写自己的实现。然而,许多程序员可能会发现标准参考实现已经满足了他们的需求,因此直接使用它们即可。

本节介绍了RowSet接口及其扩展接口:

本教程涵盖以下主题:

RowSet对象能做什么?

所有RowSet对象都派生自ResultSet接口,因此共享它的功能。JDBC RowSet对象之所以特别,是因为它们添加了以下新功能:

作为JavaBeans组件

所有RowSet对象都是JavaBeans组件。这意味着它们具有以下特点:

属性

所有RowSet对象都具有属性。属性是具有相应的getter和setter方法的字段。属性可以在构建工具(如IDEs JDveloper和Eclipse附带的工具)中暴露,以便您可以可视化地操作bean。更多信息,请参阅Properties教程。

JavaBeans通知机制

RowSet对象使用JavaBeans事件模型,在发生某些事件时通知注册的组件。对于所有RowSet对象,有三个事件会触发通知:

事件的通知会发送给所有的监听器,也就是已实现RowSetListener接口并将自身添加到RowSet对象的通知组件列表中的组件。

监听器可以是GUI组件,比如柱状图。如果柱状图正在跟踪RowSet对象中的数据,那么当数据发生变化时,监听器希望得到新的数据值。因此,监听器需要实现RowSetListener方法来定义在特定事件发生时要执行的操作。然后,还必须将监听器添加到RowSet对象的监听器列表中。以下代码行将柱状图组件bg注册到RowSet对象rs

rs.addListener(bg);

现在,bg将在光标移动、行发生变化或rs获取新数据时收到通知。

添加可滚动性或可更新性

一些数据库管理系统不支持可滚动(scrollable)的结果集,有些不支持可更新(updatable)的结果集。如果该数据库管理系统的驱动程序没有添加滚动或更新结果集的能力,您可以使用RowSet对象来实现。RowSet对象默认是可滚动和可更新的,因此通过将结果集的内容填充到RowSet对象中,可以有效地使结果集具有可滚动和可更新的特性。

RowSet对象的类型

RowSet对象可以被认为是连接或断开连接的。一个连接的RowSet对象使用JDBC驱动程序连接到关系数据库,并在其生命周期内保持该连接。一个断开连接的RowSet对象仅在从ResultSet对象读取数据或将数据写回数据源时才与数据源建立连接。在从数据源读取数据或向数据源写入数据后,RowSet对象会断开与数据源的连接,从而变为"断开连接"。在大部分生命周期中,断开连接的RowSet对象没有与数据源的连接,并且独立运行。接下来的两节将告诉您在连接或断开连接的情况下,RowSet对象可以做什么。

连接的RowSet对象

标准RowSet实现中只有一个是连接的RowSet对象:JdbcRowSet。作为始终连接到数据库的对象,JdbcRowSet对象与ResultSet对象最相似,并经常用作包装器,使原本不可滚动和只读的ResultSet对象变为可滚动和可更新。

JdbcRowSetJdbcRowSet

断开连接的RowSet对象

另外四个实现是断开连接的RowSet实现。断开连接的RowSet对象具有所有连接的RowSet对象的功能,还具有仅适用于断开连接的RowSet对象的其他功能。例如,不需要维护与数据源的连接使得断开连接的RowSet对象比JdbcRowSet对象或ResultSet对象更轻量级。断开连接的RowSet对象还是可序列化的,并且可序列化和轻量级的组合使其非常适合在网络上发送数据。它们甚至可以用于将数据发送到PDA和移动电话等瘦客户端。

CachedRowSet接口定义了所有断开连接的RowSet对象可用的基本功能。其他三个是CachedRowSet接口的扩展,提供了更专业的功能。以下信息显示了它们的关系:

CachedRowSet对象具有JdbcRowSet对象的所有功能,并且还可以执行以下操作:

WebRowSet对象具有CachedRowSet对象的所有功能,并且还可以执行以下操作:

JoinRowSet对象具有WebRowSet对象的所有功能(因此也具有CachedRowSet对象的功能),并且还可以执行以下操作:

FilteredRowSet对象类似地具有WebRowSet对象的所有功能(因此也是CachedRowSet对象),并且还可以执行以下操作:


上一页: 使用事务
下一页: 使用JdbcRowSet对象