本文概述
- Java RowSetProvider类
- JDBC示例:使用Try-With-Resources的Mysql连接
- 行集1.1
- Java CachedRowSet
- Java JdbcRowSet
在Java 7中, Java引入了以下功能:
1)它提供了使用try-with-resources语句来自动关闭Connection, ResultSet和Statement类型的资源的功能。
2)RowSet 1.1:引入RowSetFactory接口和RowSetProvider类, 使你能够创建JDBC驱动程序支持的所有类型的行集。
RowSetFactory接口
它定义了工厂的实现, 该工厂用于获取不同类型的RowSet。
RowSetFactory接口方法
方法 | 描述 |
---|---|
CachedRowSet createCachedRowSet() throws SQLException | 它创建一个FilteredRowSet的新实例。如果无法创建CachedRowSet, 则抛出SQLException。 |
FilteredRowSet createFilteredRowSet() throws SQLException | 它创建一个FilteredRowSet的新实例。如果无法创建FilteredRowSet, 则抛出SQLException。 |
JdbcRowSet createJdbcRowSet() throws SQLException | 它创建一个JdbcRowSet的新实例。如果无法创建JdbcRowSet, 则抛出SQLException。 |
JoinRowSet createJoinRowSet() throws SQLException | 它创建一个JoinRowSet的新实例。如果无法创建JoinRowSet, 则抛出SQLException。 |
WebRowSet createWebRowSet() throws SQLException | 它创建一个WebRowSet的新实例。如果无法创建WebRowSet, 则抛出SQLException。 |
方法 | 描述 |
---|---|
public static RowSetFactory newFactory() throws SQLException | 它创建RowSetFactory实现的新实例。如果无法加载或实例化默认工厂类, 则抛出SQLException。 |
public static RowSetFactory newFactory(String factoryClassName, ClassLoader cl) throws SQLException | 它根据指定的工厂类名称创建RowSetFactory的新实例。当类路径中有多个提供程序时, 此功能很有用。它可以指定应加载哪个提供程序, 从而为应用程序提供了更多控制。如果factoryClassName为null, 或者无法加载工厂类, 则抛出SQLException。 |
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
class JdbcExample{
public static void main(String args[]){
try(// --------------try-with-resources begin-------------//
// Creating connection
Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/student", "root", "mysql");
// Creating statement
Statement stmt=con.createStatement();
// Executing Sql query
ResultSet rs=stmt.executeQuery("select * from user");
)// --------------try-with-resources end--------------//
{ // ----------------try block begin---------------------//
// Iterating ResultSet elements
while(rs.next()){
System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getString(3));
}
} // ----------------try block end----------------------//
catch(Exception e){ // Exception handler
System.out.println(e.getMessage());
}
}
}
在上面的示例中, 我们使用了try-with-resources。它用于在完成try块后关闭资源。现在, 你无需显式关闭数据库连接。
确保你使用的是JDBC 4.0或更高版本以及Java 1.6或更高版本。
行集1.1在Java的早期版本中, 你已经通过使用JdbcRowSetImpl类创建了JdbcRowSet, CachedRowSet, FilteredRowSet等的实例。
现在, Java 7添加了新的RowSet 1.1。因此, 你可以使用RowSetFactory接口创建JdbcRowSet的实例。
Java CachedRowSet它将数据存储(缓存)到内存中, 以便可以对自己的数据而不是存储在数据库中的数据执行操作。它可以在不连接其数据源的情况下运行, 这也就是为什么它也称为disconnectedRowSet。
Java JDBC示例:CachedRowSet
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetProvider;
class JdbcExample{
public static void main(String args[]) throws Exception{
try(// --------------try-with-resources begin-------------//
// Creating connection
Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/student", "root", "mysql");
// Creating statement
Statement stmt=con.createStatement();
// Executing query
ResultSet rs=stmt.executeQuery("select * from user");
)// --------------try-with-resources end--------------//
{ // ----------------try block begin---------------------//
// Creating CachedRowSet
CachedRowSet cRS = RowSetProvider.newFactory().createCachedRowSet();
// Populating ResultSet data into CachedRowSet
cRS.populate(rs);
while(cRS.next()){
System.out.println(cRS.getInt(1)+""+cRS.getString(2)+""+cRS.getString(3));
}
} // ----------------try block end----------------------//
catch(Exception e){ // Exception handler
System.out.println(e);
}
}
}
Java JdbcRowSet它是一个改良的ResultSet对象, 用于维护与数据源的连接。它与ResultSet相似, 但是最大的不同是它提供了一组属性和侦听器, 就像JavaBeans一样。JdbcRowSet的主要目的是使ResultSet可滚动和可更新。
在下面的示例中, 我们正在使用新方法创建JdbcRowSet的实例。
Java JdbcRowSet示例1
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetProvider;
class JdbcExample{
public static void main(String args[]) throws Exception{
try(// --------------try-with-resources begin-------------//
// Creating connection
JdbcRowSet jRS = RowSetProvider.newFactory().createJdbcRowSet();
)// --------------try-with-resources end--------------//
{ // ----------------try block begin---------------------//
// Set database connection
jRS.setUrl("jdbc:mysql://localhost:3306/student");
// Set database username
jRS.setUsername("root");
// Set database password
jRS.setPassword("mysql");
// Set sql query to execute
jRS.setCommand("select * from user");
// Execute query
jRS.execute();
while(jRS.next()){
System.out.println(jRS.getInt(1)+""+jRS.getString(2)+""+jRS.getString(3));
}
} // ----------------try block end----------------------//
catch(Exception e){ // Exception handler
System.out.println(e);
}
}
}
Java JdbcRowSet示例:更新行
import javax.sql.rowset.JdbcRowSet;
import javax.sql.rowset.RowSetProvider;
class JdbcExample{
public staticvoid main(String args[]) throws Exception{
try(// --------------try-with-resources begin-------------//
// Creating connection
JdbcRowSet jRS = RowSetProvider.newFactory().createJdbcRowSet();
)// --------------try-with-resources end--------------//
{ // ----------------try block begin---------------------//
// Set database connection
jRS.setUrl("jdbc:mysql://localhost:3306/student");
// Set database username
jRS.setUsername("root");
// Set database password
jRS.setPassword("mysql");
// Set sql query to execute
jRS.setCommand("select * from user");
// Execute query
jRS.execute();
// Getting 3rd row because it is scrollable by default
jRS.absolute(3);
System.out.println(jRS.getInt(1)+""+jRS.getString(2)+""+jRS.getString(3));
// Updating 3rd row
jRS.updateString("name", "Neraj Kumar Singh");
jRS.updateRow();
// Fetching 3rd row again
System.out.println(jRS.getInt(1)+""+jRS.getString(2)+""+jRS.getString(3));
} // ----------------try block end----------------------//
catch(Exception e){ // Exception handler
System.out.println(e);
}
}
}
【Java 7 JDBC改进】输出:
3Neraj kumar8562697858
3Neraj Kumar Singh8562697858
推荐阅读
- Java收集器
- Java 7捕获多个异常
- Java泛型使用全解
- Java For-each循环|增强的For循环
- Java枚举用法详解
- Java自动装箱和拆箱
- 如何在Mac上免费获取Microsoft Word(详细分步指南)
- 如何加速Windows 11并提高性能(15种有效方式)
- 电脑主机,本文教您电脑主机的相关知识