Java 7 JDBC 改进

2025 年 4 月 21 日 | 阅读 4 分钟

JDBC (Java 数据库连接) 提供了从 Java 编程语言进行通用数据访问的功能。您可以使用 JDBC 从数据库、电子表格或平面文件中访问任何数据。

在 Java 7 中,Java 引入了以下功能

1) 它提供了使用 try-with-resources 语句自动关闭 Connection、ResultSet 和 Statement 类型的资源的功能。

2) RowSet 1.1:引入了 RowSetFactory 接口和 RowSetProvider 类,这使您可以创建 JDBC 驱动程序支持的所有类型的行集。

RowSetFactory 接口

它定义了用于获取不同类型 RowSet 的工厂的实现。


RowSetFactory 接口方法

方法描述
CachedRowSet createCachedRowSet() 抛出 SQLException它创建一个新的 FilteredRowSet 实例。如果无法创建 CachedRowSet,则抛出 SQLException。
FilteredRowSet createFilteredRowSet() 抛出 SQLException它创建一个新的 FilteredRowSet 实例。如果无法创建 FilteredRowSet,则抛出 SQLException。
JdbcRowSet createJdbcRowSet() 抛出 SQLException它创建一个新的 JdbcRowSet 实例。如果无法创建 JdbcRowSet,则抛出 SQLException。
JoinRowSet createJoinRowSet() 抛出 SQLException它创建一个新的 JoinRowSet 实例。如果无法创建 JoinRowSet,则抛出 SQLException。
WebRowSet createWebRowSet() 抛出 SQLException它创建一个新的 WebRowSet 实例。如果无法创建 WebRowSet,则抛出 SQLException。

Java RowSetProvider 类

它是一个工厂 API,可帮助应用程序获取 RowSetFactory 实现,该实现可用于创建不同类型的 RowSet。

方法描述
public static RowSetFactory newFactory() 抛出 SQLException它创建一个新的 RowSetFactory 实现实例。如果无法加载或实例化默认工厂类,则抛出 SQLException。
public static RowSetFactory newFactory(String factoryClassName, ClassLoader cl) 抛出 SQLException它从指定的工厂类名称创建一个新的 RowSetFactory 实例。当类路径中有多个提供程序时,此功能很有用。它为应用程序提供了更多控制权,因为它能够指定应该加载哪个提供程序。如果 factoryClassName 为 null,或者无法加载工厂类,则抛出 SQLException。

JDBC 示例:使用 Try-With-Resources 进行 Mysql 连接

在上面的示例中,我们使用了 try-with-resources。它用于在完成 try 块后关闭资源。现在,您不需要显式关闭数据库连接。

确保您使用的是 JDBC 版本 4.0 或更高版本,以及 Java 版本 1.6 或更高版本。


RowSet 1.1

在早期版本的 Java 中,您通过使用 JdbcRowSetImpl 类创建了 JdbcRowSet、CachedRowSet、FilteredRowSet 等实例。

现在,Java 7 添加了一个新的 RowSet 1.1。因此,您可以使用 RowSetFactory 接口创建 JdbcRowSet 的实例。


Java CachedRowSet

它将数据存储(缓存)到内存中,以便可以对其自身的数据执行操作,而不是存储在数据库中的数据。它可以在不连接到其数据源的情况下运行,这就是为什么它也称为断开连接的 RowSet。

Java JDBC 示例:CachedRowSet


Java JdbcRowSet

它是一个改进的 ResultSet 对象,用于维护与数据源的连接。它类似于 ResultSet,但主要区别在于它提供了一组类似 JavaBeans 的属性和侦听器。JdbcRowSet 的主要目的是使 ResultSet 可滚动和可更新。

在以下示例中,我们使用新方法创建 JdbcRowSet 的实例。

Java JdbcRowSet 示例 1


Java JdbcRowSet 示例:更新行

输出

3  Neraj kumar  8562697858
3  Neraj Kumar Singh  8562697858
下一主题Java-assert