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

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

java jdbc rowset_JDBC RowSet的使用相关推荐

  1. java rowset,cachedrowset 如何使用Java中的RowSet

    调用CachedRowSetImpl类时,为什么会出现这种错误有些人就是这样,哪怕只见过一次,终生都无法忘怀. Access restriction: The type CachedRowSetImp ...

  2. java预编译啥意思_java预编译 java jdbc 预编译语句和普通语句的区别

    java中什么是预编译precompile?总有一天你恍然大悟,父母是你花心思,花时间最少,却最爱你的人. 什么是预编译?起什么作用的? . 在java中如何实现预编译?祝你幸福!这句话真俗.小编会祝 ...

  3. Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net...

    Atitit. 数据库-----catalog与schema的设计区别以及在实际中使用 获取数据库所有库表 java jdbc php  c#.Net 1. -catalog与schema的设计区别1 ...

  4. Java JDBC批处理插入数据操作

    在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据.此外,我们将努力探索一些场景,如在内存不足时正常运行,以及 ...

  5. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  6. [Java]jdbc[转]

    [Java]jdbc[转] >>http://www.cnblogs.com/xiohao/p/3507483.html >>http://www.cnblogs.com/ho ...

  7. Java jdbc连接数据库 INSERT插入

    Java jdbc连接数据库 INSERT插入 package com.edu; import java.sql.Connection; import java.sql.DriverManager; ...

  8. jdbc oracle存储过程,java jdbc 执行oracle存储过程

    java jdbc 执行oracle存储过程 发布时间:2020-07-12 08:25:32 来源:51CTO 阅读:188 作者:v512345 java代码 public Connection ...

  9. Java JDBC中,MySQL字段类型到JAVA类型的转换

    转载自:https://www.cnblogs.com/waterystone/p/6226356.html 1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该 ...

最新文章

  1. java case switch,Java中Switch Case的替代方案
  2. LCT维护子树信息(BZOJ4530:[BJOI2014]大融合)
  3. 移动硬盘格式化了的资料找回方法
  4. Python中sort与sorted函数
  5. 明科在线客服系统PHP_在线客服系统的标准功能有哪些
  6. 在XML文件中定义动画(1)
  7. c语言循环控制结构的单元课程设计,C语言单元课程设计(张芝雨).pdf
  8. 燃料电池厂商的市场竞争
  9. AndroidStudio遇到的问题
  10. AWVS12 防止反复注册
  11. 科技文献检索与计算机应用,科技文献检索与计算机应用.doc
  12. android 表情包下载,超级表情包app下载
  13. PWM是如何调节直流电机转速的?电机正反转的原理又是怎样的?
  14. 阿里云MVP精选2018年终盘点:大咖专访+最佳实践,丰富干货等你来!...
  15. html表格动态添加图片,引用 制作html帖第四课:在表格中添加图片代码制作精美边框...
  16. 微服务实战之高可用性
  17. 向量相似度度量(二):EMD (Earth Mover's Distance)的MATLAB对照实现
  18. 流式传输原理(一) 之通过Web服务器访问音频和视频
  19. 2020年了,Android开发者应该会哪些东西才不会被公司淘汰?
  20. 惠普笔记本LED灯闪烁代码故障含义

热门文章

  1. 微信内测新功能:公众号们脖子一凉...
  2. 联发科完成双模芯片实验室测试 首批5G终端明年一季度问世
  3. 进击的爱奇艺文学:如何成为苹果园生态的重要一环?
  4. 抢注“哔哩哔哩”商标卖成人用品?A站回应:不符合价值观 已申请注销
  5. 别扭!iPhone XI Max渲染图曝光:后置超大方形3摄
  6. 拳王虚拟项目公社:分享一个大学生上班族都可做的虚拟副业项目
  7. 我的8年经验之谈:35岁的功能测试就没有未来了?自己也能拯救自己!
  8. python实现的遗传算法实例(一)
  9. 辽宁工业大学有没有计算机专业,辽宁工业大学(专业学位)计算机技术考研难吗...
  10. 试设计递归算法dfs traverse_BFS 算法框架套路详解