个性化阅读
专注于IT技术分析

JDBC行集

RowSet实例是Java Bean组件, 因为它具有属性和Java Bean通知机制。自JDK 5起引入。

它是ResultSet的包装。它包含诸如ResultSet之类的表格数据, 但使用起来既简单又灵活。

RowSet接口的实现类如下:

  • JdbcRowSet
  • CachedRowSet
  • Web行集
  • JoinRowSet中
  • FilteredRowSet
Java行集

让我们看看如何创建和执行RowSet。

JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
        rowSet.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
        rowSet.setUsername("system");
        rowSet.setPassword("oracle");
                 
        rowSet.setCommand("select * from emp400");
        rowSet.execute();

从JDK 7开始, 这是获取JdbcRowSet实例的新方法。

行集的优势

使用RowSet的优点如下:

  1. 使用简便灵活
  2. 默认情况下它是可滚动和可更新的

JdbcRowSet的简单示例

让我们看一下没有事件处理代码的JdbcRowSet的简单示例。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.sql.RowSetEvent;
import javax.sql.RowSetListener;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetProvider;

public class RowSetExample {
        public static void main(String[] args) throws Exception {
                 Class.forName("oracle.jdbc.driver.OracleDriver");
	
	//Creating and Executing RowSet
        JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
        rowSet.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
        rowSet.setUsername("system");
        rowSet.setPassword("oracle");
                 
        rowSet.setCommand("select * from emp400");
        rowSet.execute();
                 
	while (rowSet.next()) {
                        // Generating cursor Moved event
                        System.out.println("Id: " + rowSet.getString(1));
                        System.out.println("Name: " + rowSet.getString(2));
                        System.out.println("Salary: " + rowSet.getString(3));
                }
               
        }
}

输出如下:

Id: 55
Name: Om Bhim
Salary: 70000
Id: 190
Name: abhi
Salary: 40000
Id: 191
Name: umesh
Salary: 50000

具有事件处理功能的Jdbc RowSet的完整示例

若要使用JdbcRowSet执行事件处理, 需要在JdbcRowSet的addRowSetListener方法中添加RowSetListener的实例。

RowSetListener接口提供3种必须实现的方法。它们如下:

1) public void cursorMoved(RowSetEvent event);
2) public void rowChanged(RowSetEvent event);
3) public void rowSetChanged(RowSetEvent event);

让我们编写代码以检索数据并在移动光标, 更改光标或更改行集的同时执行一些其他任务。无法使用ResultSet执行事件处理操作, 因此现在首选。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.sql.RowSetEvent;
import javax.sql.RowSetListener;
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetProvider;

public class RowSetExample {
        public static void main(String[] args) throws Exception {
                 Class.forName("oracle.jdbc.driver.OracleDriver");
	
	//Creating and Executing RowSet
	JdbcRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
	rowSet.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
	rowSet.setUsername("system");
	rowSet.setPassword("oracle");
                 
        rowSet.setCommand("select * from emp400");
        rowSet.execute();
                 
	//Adding Listener and moving RowSet
	rowSet.addRowSetListener(new MyListener());

                 while (rowSet.next()) {
                        // Generating cursor Moved event
                        System.out.println("Id: " + rowSet.getString(1));
                        System.out.println("Name: " + rowSet.getString(2));
                        System.out.println("Salary: " + rowSet.getString(3));
                }
               
        }
}

class MyListener implements RowSetListener {
      public void cursorMoved(RowSetEvent event) {
                System.out.println("Cursor Moved...");
      }
     public void rowChanged(RowSetEvent event) {
                System.out.println("Cursor Changed...");
     }
     public void rowSetChanged(RowSetEvent event) {
                System.out.println("RowSet changed...");
     }
}

输出如下:

Cursor Moved...
Id: 55
Name: Om Bhim
Salary: 70000
Cursor Moved...
Id: 190
Name: abhi
Salary: 40000
Cursor Moved...
Id: 191
Name: umesh
Salary: 50000
Cursor Moved...
赞(0)
未经允许不得转载:srcmini » JDBC行集

评论 抢沙发

评论前必须登录!