CachedRowSet 的使用

1向瘦客户端传递数据

使用 CachedRowSet 对象的主要原因之一是要在应用程序的不同组件之间传递数据。因为 CachedRowSet 对象是可序列化的,所以可使用它(举例来说)将运行于服务器环境的企业 JavaBeans 组件执行查询的结果通过网络发送到运行于 web 浏览器的客户端。

由于 CachedRowSet 对象是非连接的,所以和具有相同数据的 ResultSet 对象相比更为简洁。因此,它特别适于向瘦客户端(如 PDA)发送数据,这种瘦客户端由于资源限制或安全考虑而不适于使用 JDBC 驱动程序。所以 CachedRowSet 对象可提供一种“获取各行”的方式而无需实现全部 JDBC API。

 

2 滚动和更新

CachedRowSet 对象的第二个主要用途是为那些本身不提供滚动和更新的 ResultSet 对象提供这些功能。换句话说,当 DBMS 不提供对滚动和更新的完全支持时,可使用 CachedRowSet 对象扩充启用 JDBC 技术的驱动程序(以下称为“JDBC 驱动程序”)的功能。要使不可滚动和只读的 ResultSet 对象变得可滚动和可更新,程序员只需创建一个使用该 ResultSet 对象的数据所填充的 CachedRowSet 对象即可。以下代码片断演示了这一过程,其中 stmt 是一个 Statement 对象。

    ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEES");
    CachedRowSetImpl crs = new CachedRowSetImpl();
    crs.populate(rs);
 

现在对象 crs 与对象 rs 一样,也包含了取自表 EMPLOYEES 的数据。不同的是 crs 的指针可以向前、向后移动,或者移动到特定行,即使 rs 的指针只能向前移动也是如此。此外,即使 rs 是不可更新的,crs 也将是可更新的,因为在默认情况下,CachedRowSet 对象是可滚动和可更新的。

总之,可将 CachedRowSet 对象简单地看成是一个非连接的行集合,这些行将缓存在数据源外部。由于它比较小并且是可序列化的,所以它可以轻松地通过导线发送,并且非常适合于向瘦客户端发送数据。但是 CachedRowSet 对象也有局限性:它的大小限制在它一次可在内存中存储的数据量范围内。

 

3 获得通用数据访问

CachedRowSet 类的另一个优势在于它能够从关系数据库以外各种数据源检索并存储数据。可以实现 rowset 的 reader 读取任何表格数据源(包括电子表格或平面文件)的数据,并用该数据填充其 rowset。因为 CachedRowSet 对象及其元数据都可以从头创建,所以充当 rowset 工厂的组件可以使用此功能来创建一个包含非 SQL 数据源数据的 rowset。但是,大部分情况下,希望 CachedRowSet 对象包含使用 JDBC API 从 SQL 数据库中获取的数据。

你可能感兴趣的:(sql,应用服务器,jdbc,网络应用,企业应用)