📜  Java JDBC 中的行集是什么?

📅  最后修改于: 2022-05-13 01:55:50.580000             🧑  作者: Mango

Java JDBC 中的行集是什么?

RowSet 是Java中的一个接口,存在于Java.sql 包中。 Geek 请注意不要将 RowSet 与 ResultSet 混淆。

RowSet 的实例是Java bean 组件,因为它具有属性和Java bean 通知机制。它是在 JDK5 中引入的。 JDBC RowSet 提供了一种以表格形式存储数据的方法。它使数据比 ResultSet 更灵活、更容易。 RowSet 对象和数据源之间的连接在其整个生命周期中都保持着。

RowSets 根据它们的实现方式分为五类,如下所示:

  • 行集
  • 缓存行集
  • 网络行集
  • 过滤行集
  • 加入行集

RowSet 的优点如下:



  1. 它易于使用且灵活。
  2. 默认情况下它是可滚动的并且可以默认更新,而默认情况下 ResultSet 只能转发并且只读操作仅在那里有效。

JDBC RowSet 接口是一个 RowSet 扩展。它是 ResultSet 对象的包装器,它添加了一些额外的功能。

语法: Jdbc RowSet 接口的声明

public interface JdbcRowSet
extends RowSet, Joinable

为了将 RowSet 与数据库连接,RowSet 接口提供了配置Java bean 属性的方法,如下所示:

void setURL(String url):
void setUserName(String user_name):
void setPassword(String password):

最后,我们只需要创建一个 JdbcRowSet 对象,其中 示例如下图所示:

插图:

JdbcRowSetrowSet = RowSetProvider.newFactory().createJdbcRowSet();

// 1. Oracle database considered 
rowSet.setUrl("jdbc:oracle:thin:@localhost:1521:xe");

// 2. username is set customly as - root 
rowSet.setUsername("root");

// 3. Password is set customly as - pass
rowSet.setPassword("pass");

// 4. Query 
rowSet.setCommand("select * from Students");

实现:假设我们在数据库中有一个名为student的表:

+--------------+-------------+
|  RollNo |   Name   | Marks |
+--------------+-------------+
|    1    |   jack   |    92     |
|    2    |   jenny  |    90     | 
|    3    |   mark   |    80     |
|    4    |   joe    |    82     |
+--------------+-------------+

实现 JdbcRowSet 并检索记录

Java
// Java Program to Illustrate RowSet in JDBC
 
// Importing database
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;
 
// Main class
class RowSetDemo {
 
    // Main driver method
    public static void main(String args[])
    {
 
        // Try block to check for exceptions
        try {
 
            // Loading and registering drivers
            Class.forName(
                "oracle.jdbc.driver.OracleDriver");
 
            // Creating a RowSet
            JdbcRowSetrowSet = RowSetProvider.newFactory()
                                   .createJdbcRowSet();
 
            // Setting URL, username, password
            rowSet.setUrl(
                "jdbc:oracle:thin:@localhost:1521:xe");
            rowSet.setUsername("root");
            rowSet.setPassword("pass");
 
            // Creating a query
            rowSet.setCommand("select * from Student");
 
            // Executing the query
            rowSet.execute();
 
            // Processign the results
            while (rowSet.next()) {
 
                // Print and display commands
                System.out.println("RollNo: "
                                   + rowSet.getInt(1));
                System.out.println("Name: "
                                   + rowSet.getString(2));
                System.out.println("Marks: "
                                   + rowSet.getString(3));
            }
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // Print and display the exception along with
            // line number using printStackTrace() method
            e.printStackTrace();
        }
    }
}


输出:

RollNo: 1
Name: jack 
Marks: 92
RollNo: 2
Name: jenny  
Marks: 90
RollNo: 3
Name: mark
Marks: 80
RollNo: 4
Name: joe
Marks: 82