软件包 java.sql 的描述
提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。此 API 包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源。尽管 JDBCTM API 主要用于将 SQL 语句传递给数据库,但它还可以用于以表格方式从任何数据源中读写数据。通过接口的 javax.sql.RowSet
组可以使用的 reader/writer 实用程序,可以被定制以使用和更新来自电子表格、纯文本文件或其他任何表格式数据源的数据。
JDBCTM 4.0 API 中包括的内容
JDBC TM 4.0 API 中包括java.sql
包,被称为 JDBC 核心 API,和
javax.sql
包,被称为 JDBC Optional Package API。完整的 JDBC API 包含在 Java
TM 标准版 (Java SE
TM) 6 版中。
javax.sql
包扩展了 JDBC API 的功能,将它从客户端 API 扩展到服务器端 API,该包是 Java
TM、企业版 (Java
TM) 技术的重要部分。
版本
JDBC 4.0 API 综合了以前所有 JDBC API 版本:- JDBC 3.0 API
- JDBC 2.1 核心 API
- JDBC 2.0 Optional Package API
(注意,JDBC 2.1 核心 API 和 JDBC 2.0 Optional Package API 组合在一起被称为 JDBC 2.0 API。) - The JDBC 1.2 API
- The JDBC 1.0 API
类、接口、方法、字段、构造方法和异常都有以下 "since" 标记,以指示它们何时被引入 Java 平台。当将这些 "since" 标记用于 JDBC API 的 JavadocTM 注释时,它们指示以下内容:
- Since 1.6:JDBC 4.0 API 中的新内容和 Java SE 平台 6 版的部分内容
- Since 1.4:JDBC 3.0 API 中的新内容和 J2SE 平台 1.4 版的部分内容
- Since 1.2:JDBC 2.0 API 中的新内容和 J2SE 平台 1.2 版的部分内容
- Since 1.1 或者没有 "since" 标记:原始 JDBC 1.0 API 和 JDKTM 1.1 版的部分内容
注:许多新特性都是可选的,因此,在这些版本支持的驱动程序和特性中有一些变体。在尝试使用它之前,总是检查驱动程序的文档,以查看它是否支持某一特性。
注:SQLPermission
类被添加到 JavaTM 2 SDK 标准版 1.3 版中。此类用于防止对与 DriverManager
相关联的记录流进行无授权访问,该流可以包含诸如表名称、列数据等信息。
java.sql
Package 包含的内容
java.sql
包中包含用于以下方面的 API:
- 通过
DriverManager
实用程序建立与数据库的连接DriverManager
类:建立与驱动程序的连接SQLPermission
类:当代码在 Security Manager(比如 applet)中运行时提供权限,试图通过DriverManager
设置一个记录流Driver
接口:提供用来注册和连接基于 JDBC 技术(“JDBC 驱动程序”)的驱动程序的 API,通常仅由DriverManager
类使用DriverPropertyInfo
类:提供 JDBC 驱动程序的属性,不是供一般用户使用的
- 向数据库发送 SQL 语句
Statement
:用于发送基本 SQL 语句PreparedStatement
:用于发送准备好的语句或基本 SQL 语句(派生自Statement
)CallableStatement
:用于调用数据库存储过程(派生自PreparedStatement
)Connection
接口:提供创建语句以及管理连接及其属性的方法Savepoint
:在事务中提供保存点
- 获取和更新查询的结果
ResultSet
接口
- SQL 类型到 Java 编程语言中的类和接口的标准映射关系
Array
接口:SQLARRAY
的映射关系Blob
接口:SQLBLOB
的映射关系Clob
接口:SQLCLOB
的映射关系Date
类:SQLDATE
的映射关系NClob
接口:SQLNCLOB
的映射关系Ref
接口:SQLREF
的映射关系RowId
接口:SQLROWID
的映射关系Struct
接口:SQLSTRUCT
的映射关系SQLXML
接口:SQLXML
的映射关系Time
类:SQLTIME
的映射关系Timestamp
类:SQLTIMESTAMP
的映射关系Types
类:提供用于 SQL 类型的常量
- 自定义映射 SQL 用户定义类型 (UDT) 到 Java 编程语言中的类
SQLData
接口:指定 UDT 到此类的一个实例的映射关系SQLInput
接口:提供用来从流中读取 UDT 属性的方法SQLOutput
接口:提供用来将 UDT 属性写回流中的方法
- 元数据
DatabaseMetaData
接口:提供有关数据库的信息ResultSetMetaData
接口:提供有关ResultSet
对象的列的信息ParameterMetaData
接口:提供有关PreparedStatement
命令的参数的信息
- 异常
SQLException
:由大多数方法在访问数据出问题时抛出,以及因为其他原因由其他一些方法抛出SQLWarning
:为了指示一个警告而抛出DataTruncation
:为了指示数据可能已经被截断而抛出BatchUpdateException
:为了指示并不是批量更新中的所有命令都成功执行而抛出
JDBC 4.0 API 中引入的 java.sql
和 javax.sql
特性
- 自动 java.sql.Driver 发现:不再需要通过
Class.forName
来加载java.sql.Driver
类 - 添加了国家字符集 (National Character Set) 支持
- 为 SQL:2003 XML 数据类型添加的支持
- SQLException 增强:为原因链添加的支持;为公用 SQLState 类值代码添加新 SQLException
- 增强的 Blob/Clob 功能:提供创建和释放 Blob/Clob 实例以及为了提高可访问性所添加的一些其他方法
- 为访问 SQL ROWID 添加的支持
- 添加的支持,允许 JDBC 应用程序访问已被供应商包装的 JDBC 资源实例,通常在一个应用程序服务器或连接池环境中。
- 当与
PooledConnection
关联的PreparedStatement
已关闭或驱动程序确定为无效时要通知的可用性
JDBC 3.0 API 中引入的 java.sql
和 javax.sql
特性
- 入池语句 (pooled statement):重新使用与某个已入池的连接 (pooled connection) 相关的语句
- 保存点:允许将事务回滚到某一指定保存点
- 为
ConnectionPoolDataSource
定义的属性:指定将连接入池的方法 PreparedStatement
对象的参数的元数据- 从自动生成的列中获取值的能力
- 使从
CallableStatement
对象中返回的多个ResultSet
对象同时打开的能力 - 通过名称和索引标识
CallableStatement
对象的参数的能力 ResultSet
可保存性:指定是否应该让游标在某一事务结束时保持打开或关闭状态的能力- 获取和更新
Ref
对象引用的 SQL 结构化类型实例的能力 - 通过编程方式更新
BLOB
、CLOB
、ARRAY
和REF
值的能力。 java.sql.Types.DATALINK
数据类型的添加:允许 JDBC 驱动程序访问数据源以外的地方存储的对象- 用于获取 SQL 类型分层结构的元数据的添加
JDBC 2.1 Core API 中引入的 java.sql
特性
- 可滚动的结果集:使用
ResultSet
接口中的新方法,这些方法允许将光标移动到某一特定行,或者移动到其当前位置的某一相对位置 - 批量更新
- 编程式更新:使用
ResultSet
updater 方法 - 新数据类型:映射 SQL3 数据类型的接口
- 用户定义类型 (UDT) 的自定义映射关系
- 其他特性,包括性能提示、字符流的使用、
java.math.BigDecimal
值的完全精度、其他安全性,以及对日期、时间和时间戳值中的时区的支持。
JDBC 2.0 Package API 中引入的 javax.sql
特性
DataSource
接口被认为是建立连接的一种方式。Java Naming 和 Directory InterfaceTM (JNDI) 用于向命名服务注册一个DataSource
对象和获取该对象。- 入池连接:允许使用和重新使用连接
- 分布式事务:允许事务跨越不同的 DBMS 服务器
RowSet
技术:提供一个处理和传递数据的便捷方法
UDT 的自定义映射关系
可以将 SQL 中定义的用户定义类型 (UDT) 映射到 Java 编程语言中的类。SQL 结构化类型或 SQLDISTINCT
类型是可以自定义映射的 UDT。以下三个步骤设置了一个自定义映射关系:
- 在 SQL 中定义 SQL 结构化类型或
DISTINCT
类型 - 定义 Java 编程语言中的类,SQL UDT 将映射到该类。此类必须实现
SQLData
接口。 - 在
Connection
对象的类型映射表中创建一个项,该项包含两项内容:- UDT 的完全限定 SQL 名称
- 实现
SQLData
接口的类的Class
对象
为 UDT 准备好这些之后,在该 UDT 上调用 ResultSet.getObject
或 CallableStatement.getObject
方法将自动获取该 UDT 的自定义映射关系。此外,PreparedStatement.setObject
方法会自动将该对象映射回其 SQL 类型,以便将它存储在数据源中。