当前位置: 移动技术网 > IT编程>开发语言>Java > 在JDBC中使用RowSet

在JDBC中使用RowSet

2020年03月20日  | 移动技术网IT编程  | 我要评论

原文地址:

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

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)+"\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 运行测试

file

file

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网