Java JDBC 中的行集是什么?
RowSet 是Java中的一个接口,存在于Java.sql 包中。 Geek 请注意不要将 RowSet 与 ResultSet 混淆。
Note: RowSet is present in package javax.sql while ResultSet is present in package java.sql.
RowSet 的实例是Java bean 组件,因为它具有属性和Java bean 通知机制。它是在 JDK5 中引入的。 JDBC RowSet 提供了一种以表格形式存储数据的方法。它使数据比 ResultSet 更灵活、更容易。 RowSet 对象和数据源之间的连接在其整个生命周期中都保持着。
RowSets 根据它们的实现方式分为五类,如下所示:
- 行集
- 缓存行集
- 网络行集
- 过滤行集
- 加入行集
RowSet 的优点如下:
- 它易于使用且灵活。
- 默认情况下它是可滚动的并且可以默认更新,而默认情况下 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