Module
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可选包API。
这个完整的JDBC API包含在Java标准版(Java SE)中,第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”标签用于Javadoc对JDBC API的注释时,它们表示如下:
- 由于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
类已添加到Java¢2 SDK,Standard Edition,1.3版本中。 此类用于防止未经授权的访问与DriverManager
相关联的日志记录流,其可能包含诸如表名,列数据等信息。
什么是java.sql
包含
java.sql
包包含以下API:
- 通过
DriverManager
工具与数据库建立连接-
DriverManager
类 - 与驱动程序建立连接 -
SQLPermission
类 - 在安全管理器(如小程序)中运行的代码尝试通过DriverManager
设置日志记录流时提供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
interface - 指定UDT与此类的实例的映射 -
SQLInput
接口 - 提供从流中读取UDT属性的方法 -
SQLOutput
接口 - 提供将UDT属性写回流的方法
-
- 元数据
-
DatabaseMetaData
接口 - 提供有关数据库的信息 -
ResultSetMetaData
接口 - 提供有关ResultSet
对象的列的信息 -
ParameterMetaData
接口 - 提供有关PreparedStatement
命令的参数信息
-
- 例外
-
SQLException
- 由于其他原因存在访问数据时遇到问题和某些方法,大多数方法抛出 -
SQLWarning
- 抛出以指示警告 -
DataTruncation
- 抛出以指示数据可能已被截断 -
BatchUpdateException
- 抛出以表示批处理更新中的所有命令都不会成功执行
-
java.sql
和javax.sql
在JDBC 4.3 API中javax.sql
功能
- 添加
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大小的方法,如果支持参考光标 - 增加了对大型更新计数的支持
java.sql
和javax.sql
在JDBC 4.1 API中javax.sql
功能
- 允许
Connection
,ResultSet
和Statement
与尝试,与资源语句中使用对象 - 支持添加到
CallableStatement
和ResultSet
以指定通过getObject
方法转换为Java类型 -
DatabaseMetaData
返回PseudoColumns的方法以及是否始终返回生成的密钥 - 增加了对
Connection
支持,以指定数据库模式,中止和超时物理连接。 - 添加了关闭
Statement
对象的支持,当对象的Statement
对象被关闭时 - 获得父记录器的支持
Driver
,DataSource
,ConnectionPoolDataSource
和XADataSource
java.sql
和javax.sql
在JDBC 4.0 API中javax.sql
功能
- 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中javax.sql
功能
- 池化语句 - 重用与池化连接相关联的语句
- 保存点 - 允许将事务回滚到指定的保存点
- 为
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可选软件包API中javax.sql
功能
-
DataSource
接口作为连接的一种手段。 Java命名和目录接口(JNDI)用于注册具有命名服务的DataSource
对象,并用于检索它。 - 池连接 - 允许连接被使用和重复使用
- 分布式事务 - 允许事务跨越不同的DBMS服务器
-
RowSet
技术 - 提供处理和传递数据的便利手段
UDT的自定义映射
在SQL中定义的用户定义类型(UDT)可以映射到Java编程语言中的类。 SQL结构类型或SQLDISTINCT
类型是可以自定义映射的UDT。
以下三个步骤设置了一个自定义映射:
- 在SQL中定义SQL结构类型或
DISTINCT
类型 - 定义要将SQL UDT映射到的Java编程语言中的类。 这个类必须实现
SQLData
界面。 - 在
Connection
对象的类型映射中Connection
一个条目,其中包含两件事情:- UDT的完全限定的SQL名称
- 用于实现
SQLData
接口的类的Class
对象
当这些功能适用于UDT时,调用该UDT上的方法ResultSet.getObject
或CallableStatement.getObject
将自动检索其自定义映射。 此外, PreparedStatement.setObject
方法将自动将对象重新映射到其SQL类型,以将其存储在数据源中。
包装规格
相关文档
-
接口摘要 接口 描述 Array 在Java编程语言中映射的SQL类型为ARRAY
。Blob 表示(映射)在Java编程语言中的一个SQLBLOB
值。CallableStatement 用于执行SQL存储过程的界面。Clob Java的编程语言映射为SQLCLOB
类型。Connection 与特定数据库的连接(会话)。ConnectionBuilder 从DataSource
对象创建的构建器,用于建立与data source
对象所表示的数据库的连接。DatabaseMetaData 关于整个数据库的综合信息。Driver 每个驱动程序类必须实现的接口。DriverAction 当Driver希望通过DriverManager
通知时必须实现的接口。NClob Java的编程语言映射为SQLNCLOB
类型。ParameterMetaData 可用于获取有关PreparedStatement
对象中每个参数标记的类型和属性的PreparedStatement
对象。PreparedStatement 表示预编译的SQL语句的对象。Ref SQL编程语言中的映射SQLREF
值,它是对数据库中SQL结构化类型值的引用。ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSetMetaData 可用于获取有关ResultSet
对象中列的类型和属性的信息的对象。RowId SQL编程语言中的表示(映射)SQL ROWID值。Savepoint 一个保存点的表示,这是当前事务中可以从Connection.rollback
方法引用的一个点。ShardingKey 用于指示此对象表示Sharding键的接口。ShardingKeyBuilder 从DataSource
或XADataSource
对象创建的构建器,用于创建具有支持的数据类型的子键的ShardingKey
。SQLData 用于将SQL用户定义类型(UDT)自定义映射到Java编程语言中的类的接口。SQLInput 包含表示SQL结构化类型或SQL不同类型实例的值的流的输入流。SQLOutput 用于将用户定义类型的属性写入数据库的输出流。SQLType 用于标识通用SQL类型(称为JDBC类型或供应商特定数据类型)的对象。SQLXML 用于SQL XML类型的JavaTM编程语言中的映射。Statement 用于执行静态SQL语句并返回其生成的结果的对象。Struct 用于SQL结构化类型的Java编程语言中的标准映射。Wrapper 提供在有问题的实例实际上是一个代理类时能够检索委托实例的JDBC类的接口。 -
类摘要 Class 描述 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 由于其超出MaxFieldSize
原因,数据值意外截断时,异常抛出DataTruncation
异常(写入)或报告为DataTruncation
警告(读取时)。SQLClientInfoException 当一个或多个客户端信息属性无法在Connection
上设置时,抛出SQLException
的子类。SQLDataException 当SQLState类值为“ 22 ”时,或在供应商指定的条件下,抛出SQLException
的子类。SQLException 提供有关数据库访问错误或其他错误的信息的异常。SQLFeatureNotSupportedException 当SQLState类的值为' 0A '(值为'零'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 SQLState类值为“ 08 ”的SQLException
的子类,或供应商指定的条件。SQLTransientException SQLException
的子类在以前失败的操作可能能够在没有应用程序级功能的任何干预的情况下重试操作时能够成功的情况下抛出。SQLWarning 提供有关数据库访问警告的信息的异常。