在JDBC中使用RowSet
程序员文章站
2022-04-15 15:34:37
原文地址: http://www.yiidian.com/jdbc/jdbc jdbcrowset.html 1 什么是JDBC的RowSet? 与ResultSet相比,RowSet默认是可滚动、可更新、可序列化的结果集,而且作为JavaBean使用,因此能方便的在网络上传输,用于同步两端的数据, ......
原文地址:
1 什么是jdbc的rowset?
与resultset相比,rowset默认是可滚动、可更新、可序列化的结果集,而且作为javabean使用,因此能方便的在网络上传输,用于同步两端的数据,对于离线rowset而言,程序在创建rowset时已经把数据从底层数据库读取到了内存,因此可以充分利用计算机的内存,从而降低数据库服务器的负载,提高程序性能。rowset接口继承了resultset接口。
rowset接口的实现类如下:
- jdbcrowset
- cachedrowset
- webrowset
- joinrowset
- filteredrowset
2 rowset的好处
使用rowset的优点如下:
- rowset扩展了resultset接口,因此它的功能比resultset更加强大。
- rowset对表数据的遍历更加灵活,可前后滚动。
- rowset支持缓存数据,即在connection关闭后也可以使用。
- rowset支持新的连接方式,无需connection即可连接数据库,还支持读取xml数据源。
- rowset支持filter(过滤数据)。
- rowset还支持表的join操作。
3 rowset核心代码示例
jdbcrowset rowset = rowsetprovider.newfactory().createjdbcrowset(); rowset.seturl("jdbc:mysql://localhost:3306/test"); rowset.setusername("root"); rowset.setpassword("root"); rowset.setcommand("select * from t_user"); rowset.execute();
4 没有事件监听的rowset示例
4.1 编写测试类
nolistenerrowsetdemo:
package com.yiidian; import javax.sql.rowset.jdbcrowset; import javax.sql.rowset.rowsetprovider; import java.io.*; import java.sql.*; /** * 一点教程网 - http://www.yiidian.com */ public class nolistenerrowsetdemo { public static void main(string args[])throws exception { class.forname("com.mysql.jdbc.driver"); jdbcrowset rowset = rowsetprovider.newfactory().createjdbcrowset(); rowset.seturl("jdbc:mysql://localhost:3306/test"); rowset.setusername("root"); rowset.setpassword("root"); rowset.setcommand("select * from t_user"); rowset.execute(); //移动光标,获取记录 while (rowset.next()) { system.out.print("编号: " + rowset.getint(1)+"\t"); system.out.print("名称: " + rowset.getstring(2)+"\t"); system.out.print("密码: " + rowset.getstring(3)); system.out.println(); } } }
4.2 运行测试
5 有事件监听的rowset示例
要使用jdbcrowset执行事件处理,您需要在jdbcrowset的addrowsetlistener() 方法中添加rowsetlistener的实例。
rowsetlistener接口提供3种必须实现的方法:
public void cursormoved(rowsetevent event); public void rowchanged(rowsetevent event); public void rowsetchanged(rowsetevent event);
5.1 编写测试类
haslistenerrowsetdemo:
package com.yiidian; import javax.sql.rowsetevent; import javax.sql.rowsetlistener; import javax.sql.rowset.jdbcrowset; import javax.sql.rowset.rowsetprovider; import java.io.*; import java.sql.*; /** * 一点教程网 - http://www.yiidian.com */ public class haslistenerrowsetdemo { public static void main(string args[])throws exception { class.forname("com.mysql.jdbc.driver"); jdbcrowset rowset = rowsetprovider.newfactory().createjdbcrowset(); rowset.seturl("jdbc:mysql://localhost:3306/test"); rowset.setusername("root"); rowset.setpassword("root"); rowset.setcommand("select * from t_user"); rowset.execute(); //给rowset添加事件监听处理 rowset.addrowsetlistener(new mylistener()); //移动光标,获取记录 while (rowset.next()) { system.out.print("编号: " + rowset.getint(1)+"\t"); system.out.print("名称: " + rowset.getstring(2)+"\t"); system.out.print("密码: " + rowset.getstring(3)); system.out.println(); } } } //事件监听处理类 class mylistener implements rowsetlistener { public void cursormoved(rowsetevent event) { system.out.println("光标移动..."); } public void rowchanged(rowsetevent event) { system.out.println("光标改变..."); } public void rowsetchanged(rowsetevent event) { system.out.println("rowset改变..."); } }
5.2 运行测试
欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
如果您对我的系列教程感兴趣,也可以关注我的网站: