zoukankan      html  css  js  c++  java
  • 在JDBC中使用RowSet

    原文地址: http://www.yiidian.com/jdbc/jdbc-jdbcrowset.html

    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)+"	");
                System.out.print("名称: " + rowSet.getString(2)+"	");
                System.out.print("密码: " + rowSet.getString(3));
                System.out.println();
            }
    
        }
    }
    

    4.2 运行测试

    file

    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)+"	");
                System.out.print("名称: " + rowSet.getString(2)+"	");
                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 运行测试

    file

    file

    欢迎关注我的公众号::一点教程。获得独家整理的学习资源和日常干货推送。
    如果您对我的系列教程感兴趣,也可以关注我的网站:yiidian.com

  • 相关阅读:
    Java遍历JsonObject对象
    fastjson.JSONObject之对象与JSON转换方法
    Java HotSpot VM中的JIT编译
    JAVA 反射类 捕获异常 method.invoke方法如何捕获异常
    手动调用hibernate的参数校验器和springboot参数校验器 验证
    Netty-Socketio API
    Netty-socketio集成redis,服务端集群推送消息
    mysql 导出csv格式数据解决乱码
    自建dns服务器
    MySQL 8.0 克隆(clone)插件快速搭建主从复制
  • 原文地址:https://www.cnblogs.com/yiidian/p/12529347.html
Copyright © 2011-2022 走看看