欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

在JDBC中使用RowSet

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

在JDBC中使用RowSet

在JDBC中使用RowSet

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