JDBC行集

【JDBC行集】RowSet实例是Java Bean组件, 因为它具有属性和Java Bean通知机制。自JDK 5起引入。
它是ResultSet的包装。它包含诸如ResultSet之类的表格数据, 但使用起来既简单又灵活。
RowSet接口的实现类如下:

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

文章图片
让我们看看如何创建和执行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...

    推荐阅读