JDBC 4.2 是Java SE 8的一部分,本系列文章基于JDK 1.8 对 JDBC 4.2 进行学习:
文章目录
- 1、JDBC 简介
- 2、JDBC 架构
- 2.1、常用的JDBC组件
- 3、JDBC 4.2 新特性
- 3.1、增加了REF_CURSOR支持
- 3.2、添加java.sql.DriverAction接口
- 3.3、添加java.sql.SQLType接口
- 3.4、添加java.sql.JDBCType枚举
- 3.5、添加对大量更新计数的支持
- 3.6、对现有接口的更改
- 3.7、Rowset 1.2 功能增强
Java数据库连接(Java DataBase Connection)API提供Java编程语言的通用数据访问。 使用JDBC API,您几乎可以访问任何数据源,从关系数据库到电子表格和平面文件。 JDBC技术还提供了可以构建工具和备用接口的通用基础。
JDBC API由两个包组成:
要将JDBC API与特定数据库管理系统一起使用,您需要一个基于JDBC技术的驱动程序在JDBC和数据库之间进行调解。
根据各种因素,驱动程序可能纯粹是用Java编程语言编写的,也可能是Java编程语言和Java Native Interface(JNI)本机方法的混合编写。 要获取特定数据库管理系统的JDBC驱动程序,请参阅JDBC Data Access API。
在JDBC之前,ODBC API是用于连接和执行数据库查询的数据库API。 但是,ODBC API使用用C语言编写的ODBC驱动程序(即依赖于平台和不安全)。 这就是为什么Java定义了自己的API(JDBC API),它使用JDBC驱动程序(用Java语言编写)。
我们可以使用JDBC API通过Java程序操作数据库:
JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
以下是JDBC结构图,它显示了驱动程序管理器方面的JDBC驱动程序和Java应用程序的位置:
JDBC API提供了以下接口和类:
DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。
Driver: 此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用DriverManager中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息
Connection: 此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。
Statement: 可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。
ResultSet: 这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。
SQLException: 这个类用于处理发生在数据库应用程序中的任何错误。
JDBC 4.2是Java SE 8的一部分,它引入了以下功能:
如果调用方法registerOutParameter并指定Types.REF_CURSOR作为要返回的数据类型,并且JDBC驱动程序不支持此数据类型,则抛出SQLFeatureNotSupportedException。
以下示例从具有CallableStatement类的REF_CURSOR获取ResultSet实例:
CallableStatement cstmt = conn.prepareCall("{callmySproc(?)}");
cstmt.registerOutParameter(1, Types.REF_CURSOR);
cstmt.executeQuery();
ResultSet rs = cstmt.getObject(1, ResultSet.class);
while(rs.next()){
System.out.println("Name="+ rs.getString(1));
}
要确定JDBC驱动程序是否支持REF_CURSOR,可以使用 DatabaseMetaData.supportsRefCursors 方法进行检查。
此接口用于创建标识通用SQL类型的对象,称为JDBC类型或特定于供应商的数据类型。
此枚举标识通用SQL类型,称为JDBC类型。 使用JDBCType代替Types.java中定义的常量。
JDBC方法仅返回更新计数的int值。 随着数据集的不断增长,这也带来了问题。 因此,Statement类中添加了一些方法,它返回更新计数的long值。 当返回的行数超过常量Integer.MAX_VALUE时,应使用这些方法。
以下是增强接口列表:
下面列出了为RowSet1.2增强的接口和类:
参考资料:
https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/
https://docs.oracle.com/javase/tutorial/jdbc/basics/index.html