Java 学习之路 之 Java7的RowSet1.1(五十五)

本文介绍了Java 7中RowSet接口及其子接口的使用,特别是离线RowSet如CachedRowSet的优势。RowSet允许在不连接数据库的情况下对数据进行操作,提高程序性能。Java 7引入的RowSetFactory接口简化了RowSet实例的创建,降低了直接使用非公开API的风险。同时,文章讲解了如何利用CachedRowSet实现查询分页,以解决内存占用问题。
摘要由CSDN通过智能技术生成

RowSet 接口继承了 ResultSet 接口,RowSet 接口下包含 JdbcRowSet、CachedRowSet、FilteredRowSet、JoinRowSet 和 WebRowSet 常用子接口。除了 JdbcRowSet 需要保持与数据库的连接之外,其余 4 个子接口都是离线的 RowSet,无须保持与数据库的连接。

与 ResultSet 相比,RowSet 默认是可滚动、可更新、可序列化的结果集,而且作为 JavaBean 使用,因此能方便地在网络上传输,用于同步两端的数据。对于离线 RowSet 而言,程序在创建 RowSet 时已把数据从底层数据库读取到了内存,因此可以充分利用计算机的内存,从而降低数据库服务器的负载,提高程序性能。

当年 C# 提供了 DataSet,它可以把底层的数据读取到内存中进行离线操作,操作完成后再同步到底层数据源。Java 则提供了 RowSet,RowSet 的作用也与此类似。

图 13.24 显示了 RowSet 规范的接口类图。


在图 13.24 所示的各种接口中,CachedRowSet 及其子接口都代表了离线 RowSet,它们都不需要底层数据库连接。

1,Java 7 新增的 RowSetFactory 与 RowSet

在 Java 6.0 以前,RowSet 及其 5 个子接口都已经存在了,但在实际编程中的应用一直并不广泛,这是因为 Java 公开 API 并没有为 RowSet 及其各子接口提供实现类,而且也没有提供公开的方法来创建 RowSet 及其各子接口的实例。

实际上,Java 6.0 已经在 com.sun.sun.rowset 包下提供了 JdbcRowSetlmpl、CachedRowSetlmpl、WebRowSetlmpl、FilteredRowSetlmpl 和 JoinRowSetlmpl 五个实现类,它们代表了各种 RowSet 接口的实现类。

以 JdbcRowSet 为例,在 Java 6.0 及以前的版本中,如果程序需要使用 JdbcRowSet,则必须通过调用 JdbcRowSetlmpl 的构造器。

JdbcRowSetlmpl():创建一个默认的 JdbcRowSetlmpl 对象。

JdbcRowSetlmpl(Connection conn):以给定的 Connection 对象作为数据库连接来创建 JdbcRowSetlmpl 对象。

JdbcRowSetlmpI(ResultSet rs):创建一个包装 ResultSet 对象的 JdbcRowSetlmpl 对象。

除此之外,RowSet 接口中定义了如下常用方法。

setUrI(String url):设置该 RowSet 要访问的数据库的 URL。

setUsername(String name):设置该 RowSet 要访问的数据库的用户名。

setPassword(String password):设置该 RowSet 要访问的数据库的密码。

setCommand(String sql):设置使用该 sql 语句的查询结果来装填该 RowSet。

execute():执行查询。

populate(ResultSet rs):让该 RowSet 直接包装给定的 ResultSet 对象。

通过 JdbcRowSet 的构造器和上面几个方法不难看出,为 JdbcRowSet 装填数据有如下两种方式。

创建 JdbcRowSetlmpl 时,直接传入 ResultSet 对象。

使用 execute() 方法来执行 SQL 查询,用查询返回的数据来装填 RowSet。

对于第二种方式来说,如果创建 JdbcRowSetlmpl 时已经传入了 Connection 参数,则只要先调用 setCommand(String sql) 指定 SQL 查询语句,接下来就可调用 execute() 方法执行查询了。如果创建 JdbcRowSetlmpl 时没有传入 Connection 参数,则先要为 JdbcRowSet 设置数据库的 URL、用户名、密码等连接信息。

下面程序通过 JdbcRowSetlmpl 示范了使用 JdbcRowSet 的可滚动、可修改特性。

public class JdbcRowSetTest
{
	private Strin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值