快速业务通道

Java 6 RowSet使用完全剖析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
(2); cachedRS.deleteRow(); cachedRS.acceptChanges();

使用 WebRowSet

WebRowSet 继承于 CachedRowSet,因此用来填充 CachedRowSet 的方式同样适用于 WebRowSet。WebRowSet 也可以读取一个符合规范的 XML 文件,填充自己。假定 CUSTOMERS.xml 是一个符合规范的 XML 文件,里面存放的是表 CUSTOMERS 的数据。

清单 18. 读取 XML 文件

WebRowSet newWebRS = new WebRowSetImpl(); newWebRS.readXml(new FileReader("CUSTOMERS.xml"));

相比于 CachedRowSet,WebRowSet 就是添加了对 XML 文件读写的支持。它可以将自身数据输出到 XML 文件,也可以读取符合规范的 XML 文件,来填充自己。上段示例代码中已经演示了如何读取 XML 文件。如下示例代码则是生成一个 XML 文件。

清单 19. 生成 XML 文件

WebRowSet webRS = new WebRowSetImpl(); CachedRowSetDemo.fillRowSetWithExecute(webRS); // 输出到XML文件 FileWriter fileWriter = new FileWriter("CUSTOMERS.xml"); webRS.writeXml(fileWriter);

fillRowSetWithExecute(CachedRowSet) 是一个静态方法,它的功能是用表 CUSTOMERS 来填充传入的 CachedRowSet。

应注意的问题

按照规范,当一行被标记为更新时,在输出到 XML 文件时,应使用标签 <modifyRow>,但实际输出为 <currentRow>。

按照规范,当一行中某列被更新时,在输出到 XML 文件时,应使用标签 <updateValue>,但实际输出为 <updateRow>。

按照规范,读取 XML 文件时,如果某行标签为 <deleteRow>,在读到 WebRowSet 中时,该行应被标记为删除,实际读取后,状态丢失。

使用 FilteredRowSet

FilteredRowSet 继承自 WebRowSet。正如它的名字所示,FilteredRowSet 是一个带过滤功能的 RowSet。它的过滤规则在 Predicate 中定义。Predicate 也是 javax.sql.rowset 包下的接口,它定义了三个方法:boolean evaluate(Object value, int column),boolean evaluate(Object value, String columnName),boolean evaluate(RowSet rs)。 前两个方法主要是用来检查新插入行的值是否符合过滤规则,符合,返回 true;否则,返回 false。FilteredRowSet 在新插入行时,会用这个方法来检测。如果不符合,会抛出 SQLException。boolean evaluate(RowSet rs) 这个方法则是用来判断当前 RowSet 里面的所有数据,是否符合过滤规则。FilteredRowSet 在调用有关移动游标的方法时,会使用这个方法进行检测。只要符合过滤规则的数据才会显示出来。下面我们给出了一个非常简单的 Predicate 实现,它的过滤规则是每行第一列的值只有大于 1 的才是有效行。

清单 20. Rang.java

class Range implements Predicate {   @Override   public boolean evaluate(RowSet rs) {     try {       if (rs.getInt(1) > 1) {         return true;       }     } catch (SQLException e) {       // do nothing     }     return false;   }   @Override   public boolean evaluate(Object value, int column) throws SQLException {     return false;   }   @Override   public boolean evaluate(Object value, String columnName)       throws SQLException {     return false;   } }

Java 6 RowSet使用完全剖析(9)

时间:2011-02-15 IBM 徐睿智 刘威

下面这段代码演示了使用上面定义的 class Range 前后的数据变化。

清单 21. 设置过滤器

FilteredRowSet filterRS = new FilteredRowSetImpl(); CachedRowSetDemo.fillRowSetWithExecute(filterRS); System.out.println("/*******Before set fi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号