




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业用地购买合同标准文本
- 临时演出合同样本
- 兄弟共建公司合同样本
- 作为甲方环保设备合同标准文本
- 产品业务推广合同样本
- 上海房产劳务合同样本
- 全款购车正式合同样本
- 2025【科技公司各类合同】软件开发合同
- 做事情合同范例
- 保证合同为无偿合同样本
- 楼梯踏步抹灰标准合同7篇
- 【厦门大学】DeepSeek大模型赋能高校教学和科研
- 西安房屋租赁合同(官方版)6篇
- 2025年商丘职业技术学院单招职业技能考试题库含答案
- 2025年榆林城市投资经营集团有限公司招聘笔试参考题库含答案解析
- 2025届高三化学二轮复习 化学工艺流程 课件
- 2024广东深圳市龙岗区产服集团“春雨”第二批招聘笔试笔试参考题库附带答案详解
- PLC应用技术课件 任务7. S7-1200 PLC控制电动机星三角启动(定时器)
- 旅行社运营实务课件 2.2 设计国内长线主题旅游产品
- 股份制合作协议及企业章程草案
- 《清华大学介绍》课件
评论
0/150
提交评论