模块
java.sql
Package java.sql
提供使用Java™编程语言访问和处理存储在数据源(通常是关系数据库)中的数据的API。
此API包含一个框架,可以动态安装不同的驱动程序以访问不同的数据源。
尽管JDBC™API主要用于将SQL语句传递给数据库,但它提供了使用表格格式从任何数据源读取和写入数据。
可以通过
javax.sql.RowSet
接口组获得读写器设施,以便使用和更新电子表格,平面文件或任何其他表格数据源中的数据。
JDBC [4.3] API包括什么
JDBCâ“4.3 API包括java.sql
包(称为JDBC核心API)和javax.sql
包(称为JDBC Optional Package API)。
这个完整的JDBC API包含在Java®“标准版(JavaSEâ”)版本7中javax.sql
软件包将JDBC API的功能从客户端API扩展到服务器端API,它是一个Java™企业版(Java EE™)技术的重要组成部分。
版本
JDBC 4.3 API包含所有以前的JDBC API版本:- JDBC 4.2 API
- JDBC 4.1 API
- JDBC 4.0 API
- JDBC 3.0 API
- JDBC 2.1核心API
- JDBC 2.0可选包API
(请注意,JDBC 2.1核心API和JDBC 2.0可选包API一起称为JDBC 2.0 API。) - JDBC 1.2 API
- JDBC 1.0 API
类,接口,方法,字段,构造函数和异常具有以下“since”标记,用于指示何时将它们引入Java平台。 当这些“since”标记用于JDBC API的Javadoc™注释时,它们表示以下内容:
- 从9开始 - JDBC 4.3 API中的新增功能和Java SE平台的第9版
- 从1.8开始 - JDBC 4.2 API中的新增内容和Java SE平台的一部分,版本8
- 从1.7开始 - JDBC 4.1 API中的新增内容和Java SE平台的一部分,版本7
- 从1.6 - JDBC 4.0 API中的新增内容和Java SE平台的一部分,版本6
- 从1.4开始 - JDBC 3.0 API中的新增功能和J2SE平台的1.4版本
- 从1.2开始 - JDBC 2.0 API和J2SE平台的新版本1.2
- 从1.1或没有“自”标签 - 在原始的JDBC 1.0 API和部分JDKâ“¢,版本1.1中
注意:许多新功能是可选的; 因此,驱动程序和它们支持的功能存在一些差异。 在尝试使用之前,请务必检查驱动程序的文档以确定它是否支持该功能。
注意:类SQLPermission
已添加到SQLPermission
SDK,标准版1.3版中。 此类用于防止未经授权访问与DriverManager
关联的日志记录流,该日志流可能包含表名,列数据等信息。
java.sql
包含什么
java.sql
包中包含以下API:
- 通过
DriverManager
工具与数据库建立连接-
DriverManager
class - 与驱动程序建立连接 -
SQLPermission
class - 在安全管理器(例如applet)中运行的代码尝试通过DriverManager
设置日志记录流时提供DriverManager
-
Driver
interface - 提供基于JDBC技术注册和连接驱动程序的API(“JDBC驱动程序”); 通常仅由DriverManager
类使用 -
DriverPropertyInfo
class - 提供JDBC驱动程序的属性; 一般用户不使用
-
- 将SQL语句发送到数据库
-
Statement
- 用于发送基本SQL语句 -
PreparedStatement
- 用于发送PreparedStatement
准备语句或基本SQL语句(派生自Statement
) -
CallableStatement
- 用于调用数据库存储过程(派生自PreparedStatement
) -
Connection
interface - 提供创建语句和管理连接及其属性的方法 -
Savepoint
- 在事务中提供保存点
-
- 检索和更新查询结果
-
ResultSet
接口
-
- SQL类型到Java编程语言中的类和接口的标准映射
-
Array
接口 - 映射SQLARRAY
-
Blob
接口 - SQLBLOB
映射 -
Clob
接口 - SQLCLOB
映射 -
Date
类 - SQLDATE
映射 -
NClob
interface - 映射SQLNCLOB
-
Ref
接口 - SQLREF
映射 -
RowId
接口 - 映射SQLROWID
-
Struct
接口 - SQLSTRUCT
映射 -
SQLXML
接口 - 映射SQLXML
-
Time
类 - SQLTIME
映射 -
Timestamp
类 - SQLTIMESTAMP
映射 -
Types
class - 为SQL类型提供常量
-
- 自定义SQL用户定义类型(UDT)到Java编程语言中的类
-
SQLData
interface - 指定UDT到此类实例的映射 -
SQLInput
interface - 提供从流中读取UDT属性的方法 -
SQLOutput
interface - 提供将UDT属性写回流的方法
-
- 元数据
-
DatabaseMetaData
interface - 提供有关数据库的信息 -
ResultSetMetaData
interface - 提供有关ResultSet
对象的列的信息 -
ParameterMetaData
interface - 提供有关PreparedStatement
命令的参数的信息
-
- 例外
-
SQLException
- 当访问数据时由大多数方法抛出,并且由于其他原因由某些方法抛出 -
SQLWarning
- 抛出以指示警告 -
DataTruncation
- 抛出以指示数据可能已被截断 -
BatchUpdateException
- 抛出以指示批量更新中的所有命令都未成功执行
-
java.sql
和javax.sql
功能在JDBC 4.3 API中引入
- 添加了
Sharding
支持 - 增强型
Connection
能够向驾驶员提供一个请求,一个独立的工作单元开始或结束的提示 - 增强
DatabaseMetaData
以确定是否支持Sharding - 添加方法
drivers
到DriverManager
以返回当前加载和可用的JDBC驱动程序的Stream - 添加了对
Statement
支持,用于输入文字和简单标识符 - 澄清了不推荐使用方法的Java SE版本
java.sql
和javax.sql
功能在JDBC 4.2 API中引入
- 添加了
JDBCType
枚举和SQLType
接口 - 支持
REF CURSORS
在CallableStatement
-
DatabaseMetaData
方法返回最大逻辑LOB大小以及是否支持Ref游标 - 添加了对大型更新计数的支持
java.sql
和javax.sql
功能在JDBC 4.1 API中引入
- 允许
Connection
,ResultSet
和Statement
与尝试,与资源语句中使用对象 - 支持添加到
CallableStatement
和ResultSet
以指定要通过getObject
方法转换为的Java类型 -
DatabaseMetaData
返回PseudoColumns的方法以及始终返回生成的键 - 添加了对
Connection
支持,以指定数据库模式,中止和超时物理连接。 - 添加了对其依赖对象关闭时关闭
Statement
对象的支持 - 获得父记录器的支持
Driver
,DataSource
,ConnectionPoolDataSource
和XADataSource
java.sql
和javax.sql
功能在JDBC 4.0 API中引入
- auto java.sql.Driver discovery - 不再需要通过
Class.forName
加载java.sql.Driver
类 - 国家字符集支持增加
- 为SQL:2003 XML数据类型添加了支持
- SQLException增强功能 - 增加了对原因链的支持; 为常见的SQLState类值代码添加了新的SQLExceptions
- 增强的Blob / Clob功能 - 为创建和释放Blob / Clob实例提供的支持以及为改善可访问性而添加的其他方法
- 添加了对访问SQL ROWID的支持
- 添加了支持以允许JDBC应用程序访问由供应商包装的JDBC资源的实例,通常在应用程序服务器或连接池环境中。
- 当被通知可用性
PreparedStatement
,其与相关联的PooledConnection
已被关闭或驱动程序确定是无效
java.sql
和javax.sql
功能在JDBC 3.0 API中引入
- 池化语句 - 重用与池化连接相关的语句
- 保存点 - 允许将事务回滚到指定的保存点
- 为
ConnectionPoolDataSource
定义的ConnectionPoolDataSource
- 指定如何合并连接 -
PreparedStatement
对象的参数的元数据 - 能够从自动生成的列中检索值
- 能够拥有多个
ResultSet
对象从返回CallableStatement
对象在同一时间开 - 能够按名称和索引标识
CallableStatement
对象的参数 -
ResultSet
可保持性 - 指定在事务结束时游标应保持打开还是关闭的能力 - 能够检索和更新
Ref
对象引用的SQL结构化类型实例 - 能够编程方式更新
BLOB
,CLOB
,ARRAY
和REF
值。 - 添加
java.sql.Types.DATALINK
数据类型 - 允许JDBC驱动程序访问存储在数据源外部的对象 - 添加用于检索SQL类型层次结构的元数据
java.sql
功能在JDBC 2.1 Core API中引入
- 可滚动结果集 - 使用
ResultSet
接口中的新方法,允许将光标移动到特定行或相对于其当前位置的位置 - 批量更新
- 程序化更新 - 使用
ResultSet
更新程序方法 - 新数据类型 - 映射SQL3数据类型的接口
- 用户定义类型(UDT)的自定义映射
- 其他功能,包括性能提示,字符流的使用,
java.math.BigDecimal
值的完全精度,附加安全性以及对日期,时间和时间戳值的时区支持。
javax.sql
功能在JDBC 2.0 Optional Package API中引入
-
DataSource
接口作为连接的一种手段。 Java命名和目录接口(JNDI)用于向命名服务注册DataSource
对象,也用于检索它。 - 池连接 - 允许使用和重用连接
- 分布式事务 - 允许事务跨越不同的DBMS服务器
-
RowSet
技术 - 提供处理和传递数据的便捷方法
UDT的自定义映射
SQL中定义的用户定义类型(UDT)可以映射到Java编程语言中的类。 SQL结构类型或SQLDISTINCT
类型是可以自定义映射的UDT。
以下三个步骤设置了自定义映射:
- 在SQL中定义SQL结构类型或
DISTINCT
类型 - 在SQL编程语言中定义SQL UDT将映射到的类。 该类必须实现
SQLData
接口。 - 在
Connection
对象的类型映射中创建一个包含两件事的条目:- UDT的完全限定SQL名称
- 实现
SQLData
接口的类的类
对象
当这些适用于UDT时,在该UDT上调用方法ResultSet.getObject
或CallableStatement.getObject
将自动检索它的自定义映射。 此外, PreparedStatement.setObject
方法将自动将对象映射回其SQL类型以将其存储在数据源中。
包装规格
相关文档
-
接口摘要 接口 描述 Array 用于SQL类型ARRAY
的Java编程语言中的ARRAY
。Blob SQLBLOB
值的BLOB
“¢编程语言中的表示(映射)。CallableStatement 用于执行SQL存储过程的接口。Clob 用于SQLCLOB
类型的CLOB
“¢编程语言中的CLOB
。Connection 与特定数据库的连接(会话)。ConnectionBuilder 从DataSource
对象创建的构建器,用于建立与data source
对象表示的数据库的连接。DatabaseMetaData 有关整个数据库的综合信息。Driver 每个驱动程序类必须实现的接口。DriverAction 当Driver想要通过DriverManager
通知时必须实现的接口。NClob 用于SQLNCLOB
类型的NCLOB
“¢编程语言中的NCLOB
。ParameterMetaData 一个对象,可用于获取有关PreparedStatement
对象中每个参数标记的类型和属性的信息。PreparedStatement 表示预编译SQL语句的对象。Ref SQL编程语言中SQLREF
值的映射,它是对数据库中SQL结构类型值的引用。ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSetMetaData 一个对象,可用于获取有关ResultSet
对象中列的类型和属性的信息。RowId SQL ROWID值的Java编程语言中的表示(映射)。Savepoint 保存点的表示形式,它是当前事务中可以从Connection.rollback
方法引用的Connection.rollback
。ShardingKey 用于指示此对象表示Sharding键的接口。ShardingKeyBuilder 从DataSource
或XADataSource
对象创建的构建器,用于创建具有受支持数据类型的子键的ShardingKey
。SQLData 用于将SQL用户定义类型(UDT)自定义映射到Java编程语言中的类的接口。SQLInput 一个输入流,包含表示SQL结构类型或SQL不同类型实例的值流。SQLOutput 用于将用户定义类型的属性写回数据库的输出流。SQLType 用于标识通用SQL类型的对象,称为JDBC类型或特定于供应商的数据类型。SQLXML Java XML类型的JavaTM编程语言中的映射。Statement 用于执行静态SQL语句并返回其生成的结果的对象。Struct 用于SQL结构类型的Java编程语言中的标准映射。Wrapper JDBC类的接口,它提供了在有问题的实例实际上是代理类时检索委托实例的能力。 -
类摘要 类 描述 Date 一个围绕毫秒值的瘦包装器,允许JDBC将其标识为SQLDATE
值。DriverManager 管理一组JDBC驱动程序的基本服务。DriverPropertyInfo 用于建立连接的驱动程序属性。SQLPermission SecurityManager
将在运行启用了SecurityManager
的应用程序的代码时检查的权限调用DriverManager.deregisterDriver
方法,DriverManager.setLogWriter
方法,DriverManager.setLogStream
(不建议使用)方法,SyncFactory.setJNDIContext
方法,SyncFactory.setLogger
方法,Connection.setNetworkTimeout
方法或Connection.abort
方法。Time 围绕java.util.Date
类的瘦包装器,允许JDBC API将其标识为SQLTIME
值。Timestamp 一个java.util.Date
的瘦包装器,允许JDBC API将其标识为SQLTIMESTAMP
值。Types 定义用于标识通用SQL类型的常量的类,称为JDBC类型。 -
枚举摘要 Enum 描述 ClientInfoStatus 枚举无法通过调用Connection.setClientInfo
设置属性的原因JDBCType 定义用于标识通用SQL类型的常量,称为JDBC类型。PseudoColumnUsage 伪/隐藏列使用的枚举。RowIdLifetime RowId生命周期值的枚举。 -
异常摘要 异常 描述 BatchUpdateException 批处理更新操作期间发生错误时抛出的子类SQLException
。DataTruncation 作为DataTruncation
异常(写入时)引发的异常,或者由于其超出MaxFieldSize
之外的原因而意外截断数据值时报告为DataTruncation
警告(读取时)。SQLClientInfoException 如果无法在Connection
上设置一个或多个客户端信息属性,则抛出SQLException
的子类。SQLDataException 当SQLState类值为“ 22 ”或在供应商指定的条件下时,抛出SQLException
的子类。SQLException 提供有关数据库访问错误或其他错误的信息的异常。SQLFeatureNotSupportedException 当SQLState类值为“ 0A ”(值为“0”A)时,抛出SQLException
的子类。SQLIntegrityConstraintViolationException 当SQLState类值为“ 23 ”或在供应商指定的条件下时,抛出SQLException
的子类。SQLInvalidAuthorizationSpecException 当SQLState类值为“ 28 ”或在供应商指定的条件下时,抛出SQLException
的子类。SQLNonTransientConnectionException 为SQLState类值' 08 '或在供应商指定的条件下抛出的子类SQLException
。SQLNonTransientException 除非更正了SQLException
的原因,否则在重试相同操作的实例将失败时抛出SQLException
的子类。SQLRecoverableException 如果应用程序执行某些恢复步骤并重试整个事务,或者在分布式事务(事务分支)的情况下,先前失败的操作可能会成功, 则会抛出SQLException
的子类。SQLSyntaxErrorException 当SQLState类值为“ 42 ”或在供应商指定的条件下时,抛出SQLException
的子类。SQLTimeoutException 的子类SQLException
时指定的超时抛出Statement.setQueryTimeout
,DriverManager.setLoginTimeout
,DataSource.setLoginTimeout
,XADataSource.setLoginTimeout
已过期。SQLTransactionRollbackException 当SQLState类值为“ 40 ”或在供应商指定的条件下时,抛出SQLException
的子类。SQLTransientConnectionException 5097001809290的子类,用于SQLState类值“ 08 ”,或者在供应商指定的条件下。SQLTransientException 如果在没有应用程序级功能干预的情况下重试操作时,先前失败的操作可能能够成功, 则会抛出SQLException
的子类。SQLWarning 提供有关数据库访问警告的信息的异常。