mysql open rowset_在JDBC中使用RowSet

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 运行测试

1ec280b4b4f50591805005a9c0ef0f27.png

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 运行测试

227540a6e19fba58d8f462e18c4e27e8.png

8422cae11acfa5d79ea9dcfddb7eac21.png

欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。

如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值