RowSet技术.ppt_第1页
RowSet技术.ppt_第2页
RowSet技术.ppt_第3页
RowSet技术.ppt_第4页
RowSet技术.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RowSet技术,RowSet 简介 javax.sql.rowset 自 JDK 1.4 引入,从 JDK 5.0 开始提供了参考实现。它主要包括 CachedRowSet,WebRowSet,FilteredRowSet,JoinRowSet 和 JdbcRowSet。 除了 JdbcRowSet (在线RowSet)依然保持着与数据源的连接之外,其余四个都是 Disconnected RowSet。(离线的RowSet),作用,比较 java.sql.ResultSet 而言,RowSet 的离线操作能够有效的利用计算机越来越充足的内存,减轻数据库服务器的负担,由于数据操作都是在内存中进

2、行然后批量提交到数据源,灵活性和性能都有了很大的提高。 RowSet 默认是一个可滚动,可更新,可序列化的结果集,而且它作为 JavaBeans,可以方便地在网络间传输,用于两端的数据同步。,RowSet 接口说明,CachedRowSet最常用的一种 RowSet。其他三种 RowSet(WebRowSet,FilteredRowSet,JoinRowSet)都是直接或间接继承于它并进行了扩展。它提供了对数据库的离线操作,可以将数据读取到内存中进行增删改查,再同步到数据源。可串行化(序列化),可作为 JavaBeans 在网络间传输。支持事件监听,分页等特性。 WebRowSet继承自 Ca

3、chedRowSet,并可以将 WebRowSet 写到 XML 文件中,也可以用符合规范的 XML 文件来填充 WebRowSet。 FilteredRowSet通过设置 Predicate(在 javax.sql.rowset 包中),提供数据过滤的功能。可以根据不同的条件对 RowSet 中的数据进行筛选和过滤。JoinRowSet提供类似 SQL JOIN 的功能,将不同的 RowSet 中的数据组合起来。目前在 Java 6 中只支持内联(Inner Join)连接。 JdbcRowSet(在线)对 ResultSet 的一个封装,使其能够作为 JavaBeans 被使用,是唯一一个

4、保持数据库连接的 RowSet。,JDBCRowSet的使用,public static void main(String args) throws Exception, Class.forName(com.mysql.jdbc.Driver); JdbcRowSet jrs =new JdbcRowSetImpl(); jrs.setUrl(“jdbc:mysql:/localhost:3306/xxx?useUnicode=true ,CachedRowSet的使用,第一种: public static void main(String args) throws ClassNotFound

5、Exception, SQLException Class.forName(com.mysql.jdbc.Driver); CachedRowSet crs =new CachedRowSetImpl(); Connection conn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/xxx?useUnicode=true ,CachedRowSet添加,public static void main(String args) throws ClassNotFoundException, SQLException Class.fo

6、rName(com.mysql.jdbc.Driver); CachedRowSet jrs =new CachedRowSetImpl(); jrs.setUrl(jdbc:mysql:/localhost:3306/xxx?useUnicode=true/同步到数据库 ,添加总结,新插入的行位于当前游标的下一行。本例中,先把游标移到最后一行,那么在新插入数据后,新插入的行就是最后一行了。在新插入行时,一定要先调用方法 moveToInsertRow(),然后调用 updateXXX() 设置各列值,再调用 insertRow(),最后再把游标移到当前行。注意一定要遵循这个步骤,否则将抛出异

7、常。,CachedRowSet修改,public static void main(String args) throws ClassNotFoundException, SQLException Class.forName(com.mysql.jdbc.Driver); CachedRowSet jrs =new CachedRowSetImpl(); jrs.setUrl(jdbc:mysql:/localhost:3306/xxx?useUnicode=true/同步到数据库 ,CachedRowSet删除,public static void main(String args) thr

8、ows ClassNotFoundException, SQLException Class.forName(com.mysql.jdbc.Driver); CachedRowSet jrs =new CachedRowSetImpl(); jrs.setUrl(jdbc:mysql:/localhost:3306/xxx?useUnicode=true/同步到数据库 ,CachedRowSet 总结:,填充 CachedRowSet 的两种方式 CachedRowSet 提供了两个用来获取数据的方法,一个是 execute(),另一个是 populate(ResultSet)。 使用 exe

9、cute() 填充 CachedRowSet 时,需要设置数据库连接参数和查询命令 command,CachedRowSet支持分页,第二种 public static void main(String args) throws ClassNotFoundException, SQLException Class.forName(com.mysql.jdbc.Driver); CachedRowSet crs =new CachedRowSetImpl(); Connection conn=DriverManager.getConnection(jdbc:mysql:/localhost:33

10、06/xxx?useUnicode=true ,CachedRowSet支持事务提交,try conn.setAutoCommit(false); /设置为手动提交 ResultSet rs=st.executeQuery(select * from one); crs.populate(rs); while(crs.next() for(int i=1;icrs.getMetaData().getColumnCount();i+) / System.out.println(crs.getObject(i); crs.absolute(1); crs.updateInt(1,147); crs

11、.updateRow(); crs.absolute(2); crs.updateString(1,7474); crs.updateRow(); crs.acceptChanges(conn); mit(); /事务提交 catch (SQLException e) try conn.rollback(); /回滚 System.out.println(-); ,CachedRowSet支持监听事件,Listener listener = new Listener(); crs.addRowSetListener(listener); 监听事件的类 class Listener implem

12、ents RowSetListener Override public void cursorMoved(RowSetEvent arg0) System.out.println(cursorMoved); /last() first() next() Override public void rowChanged(RowSetEvent arg0) System.out.println(rowChanged); /update() Override public void rowSetChanged(RowSetEvent arg0) System.out.println(rowSetCha

13、nged); ,CachedRowSet的缺点,/jdbc修改数据库的信息 /从内存修改信息,并同步到数据库 此时反生冲突了,输出到xml,public static void main(String args) throws ClassNotFoundException, SQLException Connection conn=null; Class.forName(com.mysql.jdbc.Driver); WebRowSet crs = new WebRowSetImpl(); conn=DriverManager.getConnection(jdbc:mysql:/localho

14、st:3306/xxx?useUnicode=true ,从xml读取文件,创建一个空的WebRowSet,用上步生成的XML文件来填充 WebRowSet newWebRS =newWebRowSetImpl(); newWebRS.readXml(new FileReader (F:EclipseDataBasesrcjdbcxxx.xml); 打印newWebRS 看看是否有数据 2 修改xml中的数据部分,再写回WebRowSet ,再打印,看看是否成功,例子,Connection conn=null; Class.forName(com.mysql.jdbc.Driver); con

15、n=DriverManager.getConnection(jdbc:mysql:/localhost:3306/xxx?useUnicode=true ,WebRowSet,将WebRowSet内存里面的信息输出到xml 从xml读取文件到WebRowSet内存里面,FilteredRowSet支持过滤 -1,while(crs.next() for(int i=1;icrs.getMetaData().getColumnCount();i+) System.out.print(crs.getObject(i)+ ); System.out.println(); Range r=new Ra

16、nge(); crs.setFilter(r); /过滤器 ResultSet rs1=st.executeQuery(select * from one); crs.populate(rs1); crs.first(); while(crs.next() for(int i=1;icrs.getMetaData().getColumnCount();i+) System.out.print(crs.getObject(i)+ ); System.out.println(-); ,FilteredRowSet支持过滤 -2,class Range implements Predicate Override public boolean evaluate(RowSet rs) try if (rs.getString(2).equals(刘珍

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论