- 所有超级接口:
-
AutoCloseable
,Wrapper
与特定数据库的连接(会话)。SQL语句在连接的上下文中执行并返回结果。
Connection
对象的数据库能够提供描述其表、支持的SQL语法、存储过程、此连接的功能等信息。可以使用getMetaData
方法获取这些信息。
注意: 配置Connection
时,JDBC应用程序应该使用适当的Connection
方法,如setAutoCommit
或setTransactionIsolation
。当存在JDBC方法时,应用程序不应直接调用SQL命令来更改连接的配置。默认情况下,Connection
对象处于自动提交模式,这意味着它在执行每个语句后会自动提交更改。如果禁用了自动提交模式,则必须显式调用commit
方法以提交更改;否则,数据库更改将不会被保存。
使用JDBC 2.1核心API创建的新Connection
对象最初具有一个空的类型映射。用户可以在此类型映射中为UDT输入自定义映射。当使用ResultSet.getObject
方法从数据源检索UDT时,getObject
方法将检查连接的类型映射,以查看是否有该UDT的条目。如果有,则getObject
方法将将UDT映射到指定的类。如果没有条目,则将使用标准映射映射UDT。
用户可以创建一个新的类型映射,这是一个java.util.Map
对象,向其中插入一个条目,并将其传递给可以执行自定义映射的java.sql
方法。在这种情况下,该方法将使用给定的类型映射,而不是与连接关联的类型映射。
例如,以下代码片段指定SQL类型ATHLETES
将在Java编程语言中映射到类Athletes
。代码片段检索Connection
对象con
的类型映射,将条目插入其中,然后使用新条目设置类型映射为连接的类型映射。
java.util.Map map = con.getTypeMap(); map.put("mySchemaName.ATHLETES", Class.forName("Athletes")); con.setTypeMap(map);
- 自版本:
- 1.1
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
表示不支持事务的常量。static final int
表示阻止脏读取的常量;可以发生不可重复读取和幻像读取。static final int
表示可以发生脏读取、不可重复读取和幻像读取的常量。static final int
表示阻止脏读取和不可重复读取的常量;可以发生幻像读取。static final int
表示阻止脏读取、不可重复读取和幻像读取的常量。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
终止一个打开的连接。default void
向驱动程序提示一个请求,一个独立的工作单元在此连接上开始。void
清除此Connection
对象报告的所有警告。void
close()
立即释放此Connection
对象的数据库和JDBC资源,而不是等待它们被自动释放。void
commit()
使自上次提交/回滚以来所做的所有更改永久化,并释放此Connection
对象当前持有的任何数据库锁。createArrayOf
(String typeName, Object[] elements) 创建Array对象的工厂方法。构造一个实现Blob
接口的对象。构造一个实现Clob
接口的对象。构造一个实现NClob
接口的对象。构造一个实现SQLXML
接口的对象。为向数据库发送SQL语句创建一个Statement
对象。createStatement
(int resultSetType, int resultSetConcurrency) 创建一个将以给定类型和并发性生成ResultSet
对象的Statement
对象。createStatement
(int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个将以给定类型、并发性和可保持性生成ResultSet
对象的Statement
对象。createStruct
(String typeName, Object[] attributes) 创建Struct对象的工厂方法。default void
向驱动程序提示一个请求,一个独立的工作单元在此连接上已完成。boolean
检索此Connection
对象的当前自动提交模式。检索此Connection
对象的当前目录名称。返回包含驱动程序支持的每个客户端信息属性的名称和当前值的列表。getClientInfo
(String name) 返回指定名称的客户端信息属性的值。int
检索使用此Connection
对象创建的ResultSet
对象的当前可保持性。检索包含有关此Connection
对象表示连接的数据库的元数据的DatabaseMetaData
对象。int
检索驱动程序将等待数据库请求完成的毫秒数。检索此Connection
对象的当前模式名称。int
检索此Connection
对象的当前事务隔离级别。检索与此Connection
对象关联的Map
对象。检索此Connection
对象调用报告的第一个警告。boolean
isClosed()
检索此Connection
对象是否已关闭。boolean
检索此Connection
对象是否处于只读模式。boolean
isValid
(int timeout) 如果连接尚未关闭且仍然有效,则返回true。将给定的SQL语句转换为系统的本机SQL语法。prepareCall
(String sql) 为调用数据库存储过程创建一个CallableStatement
对象。prepareCall
(String sql, int resultSetType, int resultSetConcurrency) 创建一个将以给定类型和并发性生成ResultSet
对象的CallableStatement
对象。prepareCall
(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个将以给定类型和并发性生成ResultSet
对象的CallableStatement
对象。prepareStatement
(String sql) 为向数据库发送参数化SQL语句创建一个PreparedStatement
对象。prepareStatement
(String sql, int autoGeneratedKeys) 创建一个具有检索自动生成键功能的默认PreparedStatement
对象。prepareStatement
(String sql, int[] columnIndexes) 创建一个具有检索由给定数组指定的自动生成键功能的默认PreparedStatement
对象。prepareStatement
(String sql, int resultSetType, int resultSetConcurrency) 创建一个将以给定类型和并发性生成ResultSet
对象的PreparedStatement
对象。prepareStatement
(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) 创建一个将以给定类型、并发性和可保持性生成ResultSet
对象的PreparedStatement
对象。prepareStatement
(String sql, String[] columnNames) 创建一个具有检索由给定数组指定的自动生成键功能的默认PreparedStatement
对象。void
releaseSavepoint
(Savepoint savepoint) 从当前事务中删除指定的Savepoint
及其后续Savepoint
对象。void
rollback()
撤消当前事务中所做的所有更改,并释放此Connection
对象当前持有的任何数据库锁。void
撤消设置给定Savepoint
对象后所做的所有更改。void
setAutoCommit
(boolean autoCommit) 将此连接的自动提交模式设置为给定状态。void
setCatalog
(String catalog) 设置给定目录名称,以选择此Connection
对象的数据库中的一个子空间进行操作。void
setClientInfo
(String name, String value) 将指定名称的客户端信息属性的值设置为指定的值。void
setClientInfo
(Properties properties) 设置连接的客户端信息属性的值。void
setHoldability
(int holdability) 将使用此Connection
对象创建的ResultSet
对象的默认可保持性更改为给定的可保持性。void
setNetworkTimeout
(Executor executor, int milliseconds) 设置Connection
或从Connection
创建的对象等待数据库回复任何请求的最长时间。void
setReadOnly
(boolean readOnly) 将此连接置于只读模式,作为提示以启用数据库优化。在当前事务中创建一个未命名的保存点,并返回表示它的新Savepoint
对象。setSavepoint
(String name) 在当前事务中创建一个具有给定名称的保存点,并返回表示它的新Savepoint
对象。void
设置要访问的给定模式名称。default void
setShardingKey
(ShardingKey shardingKey) 指定要与此连接一起使用的shardingKey。default void
setShardingKey
(ShardingKey shardingKey, ShardingKey superShardingKey) 指定要与此连接一起使用的shardingKey和superShardingKey。default boolean
setShardingKeyIfValid
(ShardingKey shardingKey, int timeout) 设置并验证此连接的sharding key。default boolean
setShardingKeyIfValid
(ShardingKey shardingKey, ShardingKey superShardingKey, int timeout) 设置并验证此连接的sharding keys。void
setTransactionIsolation
(int level) 尝试将此Connection
对象的事务隔离级别更改为给定级别。void
setTypeMap
(Map<String, Class<?>> map) 将给定的TypeMap
对象安装为此Connection
对象的类型映射。Methods declared in interface java.sql.Wrapper
isWrapperFor, unwrap
-
Field Details
-
TRANSACTION_NONE
static final int TRANSACTION_NONE表示不支持事务的常量。- 参见:
-
TRANSACTION_READ_UNCOMMITTED
static final int TRANSACTION_READ_UNCOMMITTED表示可以发生脏读、不可重复读和幻读的常量。此级别允许一个事务更改的行在该行的任何更改被提交之前被另一个事务读取(“脏读”)。如果任何更改被回滚,第二个事务将检索到一个无效的行。- 参见:
-
TRANSACTION_READ_COMMITTED
static final int TRANSACTION_READ_COMMITTED表示阻止脏读的常量;可以发生不可重复读和幻读。此级别仅禁止事务读取具有未提交更改的行。- 参见:
-
TRANSACTION_REPEATABLE_READ
static final int TRANSACTION_REPEATABLE_READ表示阻止脏读和不可重复读的常量;可以发生幻读。此级别禁止事务读取具有未提交更改的行,还禁止一种情况,即一个事务读取一行,第二个事务更改该行,第一个事务重新读取该行,在第二次读取时获得不同的值(“不可重复读”)。- 参见:
-
TRANSACTION_SERIALIZABLE
static final int TRANSACTION_SERIALIZABLE表示阻止脏读、不可重复读和幻读的常量。此级别包括在TRANSACTION_REPEATABLE_READ
中的禁止,并进一步禁止一种情况,即一个事务读取满足WHERE
条件的所有行,第二个事务插入满足该WHERE
条件的行,第一个事务为相同条件重新读取,检索第二次读取中的额外“幻影”行。- 参见:
-
-
Method Details
-
createStatement
创建一个用于向数据库发送 SQL 语句的Statement
对象。通常使用Statement
对象执行没有参数的 SQL 语句。如果同一 SQL 语句被多次执行,使用PreparedStatement
对象可能更有效。使用返回的
Statement
对象创建的结果集默认为TYPE_FORWARD_ONLY
类型,并具有CONCUR_READ_ONLY
的并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 返回:
-
一个新的默认
Statement
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法
-
prepareStatement
创建一个用于向数据库发送带参数的 SQL 语句的PreparedStatement
对象。可以预编译具有或不具有 IN 参数的 SQL 语句,并将其存储在
PreparedStatement
对象中。然后可以使用此对象多次有效地执行此语句。注意:此方法针对处理受益于预编译的参数化 SQL 语句进行了优化。如果驱动程序支持预编译,方法
prepareStatement
将发送语句到数据库进行预编译。某些驱动程序可能不支持预编译。在这种情况下,直到执行PreparedStatement
对象时,语句可能不会发送到数据库。这对用户没有直接影响;但是,它会影响哪些方法抛出某些SQLException
对象。使用返回的
PreparedStatement
对象创建的结果集默认为TYPE_FORWARD_ONLY
类型,并具有CONCUR_READ_ONLY
的并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 参数:
-
sql
- 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句 - 返回:
-
包含预编译的 SQL 语句的新默认
PreparedStatement
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法
-
prepareCall
为调用数据库存储过程创建一个CallableStatement
对象。CallableStatement
对象提供了设置其 IN 和 OUT 参数的方法,以及执行对存储过程的调用的方法。注意:此方法针对处理存储过程调用语句进行了优化。某些驱动程序在完成方法
prepareCall
时可能会将调用语句发送到数据库;其他驱动程序可能会等到执行CallableStatement
对象时才发送。这对用户没有直接影响;但是,它会影响哪些方法抛出某些 SQLExceptions。使用返回的
CallableStatement
对象创建的结果集默认为TYPE_FORWARD_ONLY
类型,并具有CONCUR_READ_ONLY
的并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 参数:
-
sql
- 可能包含一个或多个 '?' 参数占位符的 SQL 语句。通常使用 JDBC 调用转义语法指定此语句。 - 返回:
-
包含预编译的 SQL 语句的新默认
CallableStatement
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法
-
nativeSQL
将给定的 SQL 语句转换为系统的本机 SQL 语法。驱动程序可能在发送之前将 JDBC SQL 语法转换为其系统的本机 SQL 语法。此方法返回驱动程序将发送的语句的本机形式。- 参数:
-
sql
- 可能包含一个或多个 '?' 参数占位符的 SQL 语句 - 返回:
- 该语句的本机形式
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法
-
setAutoCommit
将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式,则其所有 SQL 语句将作为单独的事务执行和提交。否则,其 SQL 语句将分组为由方法commit
或方法rollback
终止的事务。默认情况下,新连接处于自动提交模式。提交发生在语句完成时。语句完成的时间取决于 SQL 语句的类型:
- 对于 DML 语句,如 Insert、Update 或 Delete,以及 DDL 语句,语句在执行完成后即完成。
- 对于 Select 语句,当关联的结果集关闭时,语句完成。
- 对于
CallableStatement
对象或返回多个结果的语句,当所有关联的结果集都已关闭,并且已检索到所有更新计数和输出参数时,语句完成。
注意:如果在事务期间调用此方法并更改了自动提交模式,则事务将被提交。如果调用
setAutoCommit
且未更改自动提交模式,则调用无效。- 参数:
-
autoCommit
-true
以启用自动提交模式;false
以禁用它 - 抛出:
-
SQLException
- 如果发生数据库访问错误,在参与分布式事务时调用 setAutoCommit(true),或在关闭连接上调用此方法 - 参见:
-
getAutoCommit
检索此Connection
对象的当前自动提交模式。- 返回:
-
此
Connection
对象的当前自动提交模式的当前状态 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法 - 参见:
-
commit
使自上次提交/回滚以来所做的所有更改永久化,并释放当前由此Connection
对象持有的任何数据库锁。仅当已禁用自动提交模式时才应使用此方法。- 抛出:
-
SQLException
- 如果发生数据库访问错误,在参与分布式事务时调用此方法,如果在关闭连接上调用此方法或此Connection
对象处于自动提交模式 - 参见:
-
rollback
撤消当前事务中所做的所有更改,并释放当前由此Connection
对象持有的任何数据库锁。仅当已禁用自动提交模式时才应使用此方法。- 抛出:
-
SQLException
- 如果发生数据库访问错误,在参与分布式事务时调用此方法,如果在关闭连接上调用此方法或此Connection
对象处于自动提交模式 - 参见:
-
close
释放此Connection
对象的数据库和JDBC资源,而不是等待它们自动释放。对已关闭的
Connection
对象调用close
方法将不起作用。强烈建议应用在调用
close
方法之前显式提交或回滚活动事务。如果调用close
方法时存在活动事务,则结果是由实现定义的。- 指定者:
-
close
在接口AutoCloseable
- 抛出:
-
SQLException
- 如果发生数据库访问错误
-
isClosed
检索此Connection
对象是否已关闭。如果在其上调用了close
方法或发生了某些致命错误,则连接已关闭。只有在调用Connection.close
方法后调用此方法才能保证返回true
。通常无法调用此方法来确定与数据库的连接是有效还是无效。典型的客户端可以通过捕获尝试执行操作时可能抛出的任何异常来确定连接是否无效。
- 返回:
-
如果此
Connection
对象已关闭,则返回true
;如果仍然打开,则返回false
- 抛出:
-
SQLException
- 如果发生数据库访问错误
-
getMetaData
检索包含有关此Connection
对象表示连接的数据库的元数据的DatabaseMetaData
对象。元数据包括有关数据库表、其支持的SQL语法、存储过程、此连接的功能等的信息。- 返回:
-
此
Connection
对象的DatabaseMetaData
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法
-
setReadOnly
将此连接置于只读模式,作为提示以启用数据库优化。注意: 无法在事务期间调用此方法。
- 参数:
-
readOnly
-true
启用只读模式;false
禁用只读模式 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在已关闭的连接上调用或在事务期间调用此方法
-
isReadOnly
检索此Connection
对象是否处于只读模式。- 返回:
-
如果此
Connection
对象处于只读模式,则返回true
;否则返回false
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法
-
setCatalog
设置给定的目录名称,以选择此Connection
对象的数据库中的一个子空间进行操作。如果驱动程序不支持目录,则会静默忽略此请求。
调用
setCatalog
对先前创建或准备的Statement
对象没有影响。当调用Connection
方法prepareStatement
或prepareCall
时是否立即执行DBMS准备操作是由实现定义的。为了最大的可移植性,在创建或准备Statement
之前应调用setCatalog
。- 参数:
-
catalog
- 要在其中操作的目录(此Connection
对象的数据库中的子空间)的名称 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法 - 参见:
-
getCatalog
检索此Connection
对象的当前目录名称。- 返回:
-
当前目录名称,如果没有则返回
null
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法 - 参见:
-
setTransactionIsolation
尝试将此Connection
对象的事务隔离级别更改为给定的级别。接口Connection
中定义的常量是可能的事务隔离级别。注意: 如果在事务期间调用此方法,结果是由实现定义的。
- 参数:
-
level
- 以下Connection
常量之一:Connection.TRANSACTION_READ_UNCOMMITTED
、Connection.TRANSACTION_READ_COMMITTED
、Connection.TRANSACTION_REPEATABLE_READ
或Connection.TRANSACTION_SERIALIZABLE
。(请注意,Connection.TRANSACTION_NONE
不能使用,因为它指定不支持事务。) - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在已关闭的连接上调用或给定的参数不是Connection
常量之一 - 参见:
-
getTransactionIsolation
检索此Connection
对象的当前事务隔离级别。- 返回:
-
当前事务隔离级别,将是以下常量之一:
Connection.TRANSACTION_READ_UNCOMMITTED
、Connection.TRANSACTION_READ_COMMITTED
、Connection.TRANSACTION_REPEATABLE_READ
、Connection.TRANSACTION_SERIALIZABLE
或Connection.TRANSACTION_NONE
。 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法 - 参见:
-
getWarnings
检索由此Connection
对象调用报告的第一个警告。如果有多个警告,后续警告将链接到第一个警告,并可以通过在先前检索的警告上调用SQLWarning.getNextWarning
方法来检索。不得在已关闭的连接上调用此方法;这样做将导致抛出
SQLException
。注意: 后续警告将链接到此SQLWarning。
- 返回:
-
第一个
SQLWarning
对象或null
(如果没有) - 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法 - 参见:
-
clearWarnings
清除此Connection
对象报告的所有警告。调用此方法后,方法getWarnings
将返回null
,直到为此Connection
对象报告新警告。- 抛出:
-
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法
-
createStatement
创建一个Statement
对象,该对象将以给定的类型和并发性生成ResultSet
对象。此方法与上面的createStatement
方法相同,但允许覆盖默认的结果集类型和并发性。创建的结果集的可保持性可以通过调用getHoldability()
来确定。- 参数:
-
resultSetType
- 结果集类型之一;ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
之一 -
resultSetConcurrency
- 并发性类型之一;ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
之一 - 返回:
-
将以给定类型和并发性生成
ResultSet
对象的新Statement
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在已关闭的连接上调用或给定的参数不是指示类型和并发性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法或不支持指定的结果集类型和结果集并发性 - 自:
- 1.2
-
prepareStatement
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException 创建一个PreparedStatement
对象,该对象将以给定的类型和并发性生成ResultSet
对象。此方法与上面的prepareStatement
方法相同,但允许覆盖默认的结果集类型和并发性。创建的结果集的可保持性可以通过调用getHoldability()
来确定。- 参数:
-
sql
- 一个String
对象,表示要发送到数据库的SQL语句;可能包含一个或多个'?' IN参数 -
resultSetType
- 一个结果集类型;可以是ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
之一 -
resultSetConcurrency
- 一个并发类型;可以是ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
之一 - 返回:
-
包含预编译SQL语句的新PreparedStatement对象,该对象将生成具有给定类型和并发性的
ResultSet
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接上调用,或给定的参数不是指示类型和并发性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法或不支持指定的结果集类型和结果集并发性 - 自版本:
- 1.2
-
prepareCall
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException 创建一个CallableStatement
对象,该对象将生成具有给定类型和并发性的ResultSet
对象。此方法与上面的prepareCall
方法相同,但允许覆盖默认的结果集类型和并发性。可以通过调用getHoldability()
来确定创建的结果集的保持性。- 参数:
-
sql
- 一个String
对象,表示要发送到数据库的SQL语句;可能包含一个或多个'?'参数 -
resultSetType
- 一个结果集类型;可以是ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
之一 -
resultSetConcurrency
- 一个并发类型;可以是ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
之一 - 返回:
-
包含预编译SQL语句的新
CallableStatement
对象,该对象将生成具有给定类型和并发性的ResultSet
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接上调用,或给定的参数不是指示类型和并发性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法或不支持指定的结果集类型和结果集并发性 - 自版本:
- 1.2
-
getTypeMap
检索与此Connection
对象关联的Map
对象。除非应用程序添加了条目,否则返回的类型映射将为空。在对从
getTypeMap
返回的Map
对象进行更改后,必须调用setTypeMap
,因为JDBC驱动程序可能会创建setTypeMap
传递的Map
对象的内部副本:Map<String,Class<?>> myMap = con.getTypeMap(); myMap.put("mySchemaName.ATHLETES", Athletes.class); con.setTypeMap(myMap);
- 返回:
-
与此
Connection
对象关联的java.util.Map
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误或此方法在关闭连接上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.2
- 另请参阅:
-
setTypeMap
将给定的TypeMap
对象安装为此Connection
对象的类型映射。类型映射将用于自定义映射SQL结构类型和不同类型。在调用
setMap
之前,必须为TypeMap
设置值,因为JDBC驱动程序可能会创建TypeMap
传递的内部副本:Map myMap<String,Class<?>> = new HashMap<String,Class<?>>(); myMap.put("mySchemaName.ATHLETES", Athletes.class); con.setTypeMap(myMap);
- 参数:
-
map
- 要安装为此Connection
对象的默认类型映射替代的java.util.Map
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接上调用,或给定的参数不是java.util.Map
对象 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.2
- 另请参阅:
-
setHoldability
更改使用此Connection
对象创建的ResultSet
对象的默认保持性为给定的保持性。可以通过调用DatabaseMetaData.getResultSetHoldability()
来确定ResultSet
对象的默认保持性。- 参数:
-
holdability
- 一个ResultSet
保持性常量;可以是ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
之一 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接上调用,或给定的参数不是指示保持性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果不支持给定的保持性 - 自版本:
- 1.4
- 另请参阅:
-
getHoldability
检索使用此Connection
对象创建的ResultSet
对象的当前保持性。- 返回:
-
保持性,可以是
ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
之一 - 抛出:
-
SQLException
- 如果发生数据库访问错误或此方法在关闭连接上调用 - 自版本:
- 1.4
- 另请参阅:
-
setSavepoint
在当前事务中创建一个未命名的保存点,并返回表示它的新Savepoint
对象。如果在活动事务之外调用setSavepoint,则将在此新创建的保存点上启动事务。
- 返回:
-
新的
Savepoint
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在参与分布式事务时调用,此方法在关闭连接上调用,或此Connection
对象当前处于自动提交模式 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.4
- 另请参阅:
-
setSavepoint
在当前事务中使用给定名称创建一个保存点,并返回表示它的新Savepoint
对象。如果在活动事务之外调用setSavepoint,则将在此新创建的保存点上启动事务。
- 参数:
-
name
- 包含保存点名称的String
- 返回:
-
新的
Savepoint
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在参与分布式事务时调用,此方法在关闭连接上调用,或此Connection
对象当前处于自动提交模式 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.4
- 另请参阅:
-
rollback
撤消设置保存点后所做的所有更改。此方法仅在禁用自动提交时使用。
- 参数:
-
savepoint
- 要回滚到的Savepoint
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在参与分布式事务时被调用,此方法在关闭连接时被调用,Savepoint
对象不再有效,或者此Connection
对象当前处于自动提交模式 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自从:
- 1.4
- 参见:
-
releaseSavepoint
从当前事务中移除指定的Savepoint
及其后续的Savepoint
对象。在移除后对保存点的任何引用都将导致抛出SQLException
。- 参数:
-
savepoint
- 要移除的Savepoint
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接时被调用,或者给定的Savepoint
对象不是当前事务中的有效保存点 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自从:
- 1.4
-
createStatement
Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException 创建一个Statement
对象,该对象将以给定的类型、并发性和可保持性生成ResultSet
对象。此方法与上面的createStatement
方法相同,但允许覆盖默认的结果集类型、并发性和可保持性。- 参数:
-
resultSetType
- 以下ResultSet
常量之一:ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
-
resultSetConcurrency
- 以下ResultSet
常量之一:ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
-
resultSetHoldability
- 以下ResultSet
常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
- 返回:
-
一个新的
Statement
对象,该对象将以给定的类型、并发性和可保持性生成ResultSet
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接时被调用,或者给定的参数不是指示类型、并发性和可保持性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者此方法不支持指定的结果集类型、结果集可保持性和结果集并发性 - 自从:
- 1.4
- 参见:
-
prepareStatement
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException 创建一个PreparedStatement
对象,该对象将以给定的类型、并发性和可保持性生成ResultSet
对象。此方法与上面的
prepareStatement
方法相同,但允许覆盖默认的结果集类型、并发性和可保持性。- 参数:
-
sql
- 要发送到数据库的SQL语句的String
对象;可能包含一个或多个'?' IN参数 -
resultSetType
- 以下ResultSet
常量之一:ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
-
resultSetConcurrency
- 以下ResultSet
常量之一:ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
-
resultSetHoldability
- 以下ResultSet
常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
- 返回:
-
一个新的
PreparedStatement
对象,包含预编译的SQL语句,将以给定的类型、并发性和可保持性生成ResultSet
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接时被调用,或者给定的参数不是指示类型、并发性和可保持性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者此方法不支持指定的结果集类型、结果集可保持性和结果集并发性 - 自从:
- 1.4
- 参见:
-
prepareCall
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException 创建一个CallableStatement
对象,该对象将以给定的类型和并发性生成ResultSet
对象。此方法与上面的prepareCall
方法相同,但允许覆盖默认的结果集类型、结果集并发性类型和可保持性。- 参数:
-
sql
- 要发送到数据库的SQL语句的String
对象;可能包含一个或多个'?'参数 -
resultSetType
- 以下ResultSet
常量之一:ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
-
resultSetConcurrency
- 以下ResultSet
常量之一:ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
-
resultSetHoldability
- 以下ResultSet
常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
- 返回:
-
一个新的
CallableStatement
对象,包含预编译的SQL语句,将以给定的类型、并发性和可保持性生成ResultSet
对象 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接时被调用,或者给定的参数不是指示类型、并发性和可保持性的ResultSet
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者此方法不支持指定的结果集类型、结果集可保持性和结果集并发性 - 自从:
- 1.4
- 参见:
-
prepareStatement
创建一个默认的PreparedStatement
对象,具有检索自动生成键的能力。给定的常量告诉驱动程序是否应该使自动生成的键可用于检索。如果SQL语句不是INSERT
语句,或者是能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),则此参数将被忽略。注意: 此方法针对处理受益于预编译的参数化SQL语句进行了优化。如果驱动程序支持预编译,方法
prepareStatement
将发送语句到数据库进行预编译。某些驱动程序可能不支持预编译。在这种情况下,直到执行PreparedStatement
对象时,语句才可能被发送到数据库。这对用户没有直接影响;但是,它会影响哪些方法引发某些SQLExceptions。使用返回的
PreparedStatement
对象创建的结果集默认为类型TYPE_FORWARD_ONLY
,并具有CONCUR_READ_ONLY
的并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 参数:
-
sql
- 可能包含一个或多个'?' IN参数占位符的SQL语句 -
autoGeneratedKeys
- 一个指示是否应返回自动生成键的标志;为Statement.RETURN_GENERATED_KEYS
或Statement.NO_GENERATED_KEYS
之一 - 返回:
-
一个新的
PreparedStatement
对象,包含预编译的SQL语句,将具有返回自动生成键的能力 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭连接时被调用,或者给定的参数不是指示是否应返回自动生成键的Statement
常量 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持具有常量Statement.RETURN_GENERATED_KEYS的此方法 - 自从:
- 1.4
-
prepareStatement
创建一个默认的PreparedStatement
对象,能够返回由给定数组指定的自动生成的键。该数组包含目标表中包含应该提供的自动生成键的列的索引。如果SQL语句不是INSERT
语句,或者是能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。可以预编译带有或不带有IN参数的SQL语句,并将其存储在
PreparedStatement
对象中。然后可以使用该对象多次有效地执行此语句。注意:此方法针对处理受益于预编译的参数化SQL语句进行了优化。如果驱动程序支持预编译,方法
prepareStatement
将向数据库发送语句以进行预编译。某些驱动程序可能不支持预编译。在这种情况下,直到执行PreparedStatement
对象,语句才可能不会发送到数据库。这对用户没有直接影响;但是,它会影响哪些方法引发某些SQLException。使用返回的
PreparedStatement
对象创建的结果集默认为TYPE_FORWARD_ONLY
类型,并具有CONCUR_READ_ONLY
并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 参数:
-
sql
- 可能包含一个或多个'?' IN参数占位符的SQL语句 -
columnIndexes
- 一个包含应从插入的行或行返回的列的索引的数组 - 返回:
-
一个新的
PreparedStatement
对象,包含预编译的语句,能够返回由给定列索引数组指定的自动生成的键 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自:
- 1.4
-
prepareStatement
创建一个默认的PreparedStatement
对象,能够返回由给定数组指定的自动生成的键。该数组包含目标表中包含应该返回的自动生成键的列的名称。如果SQL语句不是INSERT
语句,或者是能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。可以预编译带有或不带有IN参数的SQL语句,并将其存储在
PreparedStatement
对象中。然后可以使用该对象多次有效地执行此语句。注意:此方法针对处理受益于预编译的参数化SQL语句进行了优化。如果驱动程序支持预编译,方法
prepareStatement
将向数据库发送语句以进行预编译。某些驱动程序可能不支持预编译。在这种情况下,直到执行PreparedStatement
对象,语句才可能不会发送到数据库。这对用户没有直接影响;但是,它会影响哪些方法引发某些SQLException。使用返回的
PreparedStatement
对象创建的结果集默认为TYPE_FORWARD_ONLY
类型,并具有CONCUR_READ_ONLY
并发级别。可以通过调用getHoldability()
来确定创建的结果集的可保持性。- 参数:
-
sql
- 可能包含一个或多个'?' IN参数占位符的SQL语句 -
columnNames
- 一个包含应从插入的行或行返回的列的名称的数组 - 返回:
-
一个新的
PreparedStatement
对象,包含预编译的语句,能够返回由给定列名称数组指定的自动生成的键 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自:
- 1.4
-
createClob
构造一个实现Clob
接口的对象。返回的对象最初不包含数据。可以使用Clob
接口的setAsciiStream
、setCharacterStream
和setString
方法向Clob
添加数据。- 返回:
-
一个实现
Clob
接口的对象 - 抛出:
-
SQLException
- 如果无法构造实现Clob
接口的对象,或者在关闭连接上调用此方法,或者发生数据库访问错误。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自:
- 1.6
-
createBlob
构造一个实现Blob
接口的对象。返回的对象最初不包含数据。可以使用Blob
接口的setBinaryStream
和setBytes
方法向Blob
添加数据。- 返回:
-
一个实现
Blob
接口的对象 - 抛出:
-
SQLException
- 如果无法构造实现Blob
接口的对象,或者在关闭连接上调用此方法,或者发生数据库访问错误。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自:
- 1.6
-
createNClob
构造一个实现NClob
接口的对象。返回的对象最初不包含数据。可以使用NClob
接口的setAsciiStream
、setCharacterStream
和setString
方法向NClob
添加数据。- 返回:
-
一个实现
NClob
接口的对象 - 抛出:
-
SQLException
- 如果无法构造实现NClob
接口的对象,或者在关闭连接上调用此方法,或者发生数据库访问错误。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自:
- 1.6
-
createSQLXML
构造一个实现SQLXML
接口的对象。返回的对象最初不包含数据。可以使用SQLXML
接口的createXmlStreamWriter
对象和setString
方法向SQLXML
对象添加数据。- 返回:
-
一个实现
SQLXML
接口的对象 - 抛出:
-
SQLException
- 如果无法构造实现SQLXML
接口的对象,或者在关闭连接上调用此方法,或者发生数据库访问错误。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自:
- 1.6
-
isValid
如果连接尚未关闭且仍然有效,则返回true。当调用此方法时,驱动程序应在连接上提交查询或使用其他机制来积极验证连接仍然有效。驱动程序提交用于验证连接的查询应在当前事务的上下文中执行。
- 参数:
-
timeout
- 等待数据库操作完成的时间(以秒为单位)。如果超时时间在操作完成之前到期,则此方法返回false。值为0表示不对数据库操作应用超时。 - 返回:
- 如果连接有效,则返回true;否则返回false
- 抛出:
-
SQLException
- 如果为timeout
提供的值小于0 - 自:
- 1.6
- 参见:
-
setClientInfo
设置指定名称的客户端信息属性的值为指定的值。应用程序可以使用
DatabaseMetaData.getClientInfoProperties
方法来确定驱动程序支持的客户端信息属性以及每个属性可以指定的最大长度。驱动程序将指定的值存储在数据库中的适当位置。例如,在特殊寄存器、会话参数或系统表列中。为了效率,驱动程序可能会推迟将值设置到数据库中,直到下次执行或准备语句时。除了将客户端信息存储在数据库中的适当位置之外,这些方法不会以任何方式更改连接的行为。这些方法提供的值仅用于会计、诊断和调试目的。
如果驱动程序不识别指定的客户端信息名称,则驱动程序将生成警告。
如果此方法指定的值大于属性的最大长度,则驱动程序可以截断该值并生成警告,或生成
SQLClientInfoException
。如果驱动程序生成SQLClientInfoException
,则未在连接上设置指定的值。以下是标准的客户端信息属性。驱动程序不必支持这些属性,但如果驱动程序支持可以由标准属性之一描述的客户端信息属性,则应使用标准属性名称。
- ApplicationName - 当前正在使用连接的应用程序的名称
- ClientUser - 使用连接的应用程序为其执行工作的用户的名称。这可能与建立连接时使用的用户名不同。
- ClientHostname - 使用连接的应用程序所在计算机的主机名。
- 参数:
-
name
- 要设置的客户端信息属性的名称 -
value
- 要将客户端信息属性设置为的值。如果值为null,则清除指定属性的当前值。 - 抛出:
-
SQLClientInfoException
- 如果数据库服务器在设置数据库服务器上的客户端信息值时返回错误,或者在关闭的连接上调用此方法 - 自版本:
- 1.6
-
setClientInfo
设置连接的客户端信息属性的值。Properties
对象包含要设置的客户端信息属性的名称和值。属性列表中包含的客户端信息属性集替换连接上的当前客户端信息属性集。如果当前设置在连接上的属性不在属性列表中,则清除该属性。指定空属性列表将清除连接上的所有属性。有关更多信息,请参见setClientInfo (String, String)
。如果设置任何客户端信息属性时发生错误,则会抛出
SQLClientInfoException
。SQLClientInfoException
包含指示未设置哪些客户端信息属性的信息。客户端信息的状态是未知的,因为一些数据库不允许原子地设置多个客户端信息属性。对于这些数据库,在发生错误之前可能已设置一个或多个属性。- 参数:
-
properties
- 要设置的客户端信息属性列表 - 抛出:
-
SQLClientInfoException
- 如果数据库服务器在设置数据库服务器上的客户端信息值时返回错误,或者在关闭的连接上调用此方法 - 自版本:
- 1.6
- 另请参见:
-
getClientInfo
返回指定名称的客户端信息属性的值。如果指定的客户端信息属性尚未设置且没有默认值,则此方法可能返回null。如果驱动程序不支持指定的客户端信息属性名称,则此方法还将返回null。应用程序可以使用
DatabaseMetaData.getClientInfoProperties
方法来确定驱动程序支持的客户端信息属性。- 参数:
-
name
- 要检索的客户端信息属性的名称 - 返回:
- 指定客户端信息属性的值
- 抛出:
-
SQLException
- 如果数据库服务器在从数据库中获取客户端信息值时返回错误,或者在关闭的连接上调用此方法 - 自版本:
- 1.6
- 另请参见:
-
getClientInfo
返回包含驱动程序支持的每个客户端信息属性的名称和当前值的列表。如果客户端信息属性的值尚未设置且没有默认值,则客户端信息属性的值可能为null。- 返回:
-
包含驱动程序支持的每个客户端信息属性的名称和当前值的
Properties
对象。 - 抛出:
-
SQLException
- 如果数据库服务器在从数据库中获取客户端信息值时返回错误,或者在关闭的连接上调用此方法 - 自版本:
- 1.6
-
createArrayOf
创建Array对象的工厂方法。注意:当使用
createArrayOf
创建映射到原始数据类型的数组对象时,Array
对象是该原始数据类型的数组还是Object
数组是由实现定义的。注意:JDBC驱动程序负责将
Object
数组的元素映射到给定Object
类的java.sql.Types中定义的默认JDBC SQL类型。默认映射在JDBC规范的附录B中指定。如果生成的JDBC类型不是给定typeName的适当类型,则由实现定义是抛出SQLException
还是驱动程序支持生成的转换。- 参数:
-
typeName
- 数组元素映射到的类型的SQL名称。typeName是数据库特定的名称,可以是此数据库支持的内置类型的名称、用户定义类型的名称或标准SQL类型的名称。这是由Array.getBaseTypeName
返回的值 -
elements
- 填充返回对象的元素 - 返回:
- 其元素映射到指定SQL类型的Array对象
- 抛出:
-
SQLException
- 如果发生数据库错误,JDBC类型不适合于typeName且不支持转换,typeName为null或在关闭的连接上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自版本:
- 1.6
-
createStruct
创建Struct对象的工厂方法。- 参数:
-
typeName
- 此Struct
对象映射到的SQL结构化类型的SQL类型名称。typeName是为此数据库定义的用户定义类型的名称。它是由Struct.getSQLTypeName
返回的值。 -
attributes
- 填充返回对象的属性 - 返回:
- 映射到给定SQL类型并填充给定属性的Struct对象
- 抛出:
-
SQLException
- 如果发生数据库错误,typeName为null或在关闭的连接上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 自版本:
- 1.6
-
setSchema
设置要访问的模式名称。如果驱动程序不支持模式,则会静默忽略此请求。
调用
setSchema
对先前创建或准备的Statement
对象没有影响。当调用Connection
方法prepareStatement
或prepareCall
时,DBMS是否立即执行准备操作是由实现定义的。为了最大可移植性,应在创建或准备Statement
之前调用setSchema
。- 参数:
-
schema
- 要工作的模式的名称 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的连接上调用此方法 - 自版本:
- 1.7
- 另请参见:
-
getSchema
检索此Connection
对象的当前模式名称。- 返回:
-
当前模式名称,如果没有则为
null
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的连接上调用此方法 - 自版本:
- 1.7
- 另请参见:
-
abort
终止一个打开的连接。调用abort
的结果是:- 将连接标记为关闭
- 关闭到数据库的任何物理连接
- 释放连接使用的资源
- 确保当前访问连接的任何线程要么完成进度,要么抛出
SQLException
。
调用
abort
会标记连接为关闭并释放任何资源。在已关闭的连接上调用abort
是一个空操作。中止和释放连接持有的资源可能需要较长时间。当
abort
方法返回时,连接将被标记为关闭,并且作为参数传递给abort的Executor
可能仍在执行释放资源的任务。此方法在允许方法继续之前检查是否存在
SQLPermission
对象。如果存在SecurityManager
并且其checkPermission
方法拒绝调用abort
,此方法将抛出java.lang.SecurityException
。- 参数:
-
executor
- 将被abort
使用的Executor
实现。 - 抛出:
-
SQLException
- 如果发生数据库访问错误或executor
为null
, -
SecurityException
- 如果存在安全管理器并且其checkPermission
方法拒绝调用abort
- 自版本:
- 1.7
- 参见:
-
setNetworkTimeout
设置Connection
或从Connection
创建的对象等待数据库回复任何一个请求的最长时间。如果任何请求仍未得到回复,等待方法将返回一个SQLException
,并且Connection
或从Connection
创建的对象将被标记为关闭。除了close
、isClosed
或Connection.isValid
方法之外,对对象的任何后续使用都将导致SQLException
。注意:此方法旨在解决一种罕见但严重的情况,即网络分区可能导致发出JDBC调用的线程在套接字读取中无法中断地挂起,直到操作系统TCP超时(通常为10分钟)。此方法与提供管理员线程一种方法来释放任何这种线程的
abort()
方法相关联,前提是JDBC连接对管理员线程可访问。setNetworkTimeout
方法将涵盖没有管理员线程或管理员线程无法访问连接的情况。此方法的影响严重,应该给予足够高的值,以便在任何更正常的超时之前永远不会触发,例如事务超时。JDBC驱动程序实现也可以选择支持
setNetworkTimeout
方法,以在没有网络的环境中对数据库响应时间施加限制。驱动程序可能会在内部使用多个内部驱动程序-数据库传输来实现其API调用的某些或全部部分,由驱动程序实现确定限制是否始终应用于API调用的响应,或者应用于API调用期间进行的任何单个请求。
此方法可以被多次调用,例如为JDBC代码区域设置限制,并在退出该区域时重置为默认值。调用此方法对已经存在的请求没有影响。
Statement.setQueryTimeout()
超时值独立于setNetworkTimeout
指定的超时值。如果查询超时在网络超时之前到期,则语句执行将被取消。如果网络仍处于活动状态,则结果将是语句和连接仍然可用。但是,如果查询超时在网络超时之前到期,或者如果由于网络问题语句超时失败,则连接将被标记为关闭,连接持有的任何资源将被释放,并且连接和语句都将不可用。当驱动程序确定
setNetworkTimeout
超时值已过期时,JDBC驱动程序将标记连接为关闭并释放连接持有的任何资源。此方法在允许方法继续之前检查是否存在
SQLPermission
对象。如果存在SecurityManager
并且其checkPermission
方法拒绝调用setNetworkTimeout
,此方法将抛出java.lang.SecurityException
。- 参数:
-
executor
- 将被setNetworkTimeout
使用的Executor
实现。 -
milliseconds
- 等待数据库操作完成的时间(以毫秒为单位)。如果JDBC驱动程序不支持毫秒,则JDBC驱动程序将将值四舍五入到最接近的秒。如果操作在超时期间未完成,则将抛出SQLException。值为0表示数据库操作没有超时。 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在已关闭的连接上调用,executor
为null
,或为seconds
指定的值小于0。 -
SecurityException
- 如果存在安全管理器并且其checkPermission
方法拒绝调用setNetworkTimeout
。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.7
- 参见:
-
getNetworkTimeout
检索驱动程序将等待数据库请求完成的毫秒数。如果超过限制,将抛出SQLException
。- 返回:
- 毫秒为单位的当前超时限制;零表示没有限制
- 抛出:
-
SQLException
- 如果发生数据库访问错误或此方法在已关闭的Connection
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自版本:
- 1.7
- 参见:
-
beginRequest
提示驱动程序,一个请求,一个独立的工作单元,正在此连接上开始。每个请求与连接本地状态(无论是客户端还是服务器上的状态)相互独立。在beginRequest
、endRequest
对之间完成的工作不依赖于连接上的任何其他工作,无论是作为另一个请求的一部分还是在任何请求之外。一个请求可能包括多个事务。可能会依赖于已提交的数据库状态,因为该状态不是连接本地的。本地状态被定义为与当前连接相关联的任何状态,无论是在客户端还是数据库中,都无法透明地再现。
对
beginRequest
和endRequest
的调用不是嵌套的。多次调用beginRequest
而没有中间调用endRequest
不是错误。第一次beginRequest
调用标记请求的开始,后续调用被视为无操作使用
beginRequest
和endRequest
是可选的,供应商特定的,并且应该在很大程度上是透明的。特别是实现可能会检测到指示依赖于其他工作的条件,例如打开事务。建议但不是必须的,如果存在活动事务并且调用了beginRequest
,则实现应抛出SQLException
。使用这些方法可能会提高性能或提供其他好处。请查阅供应商的文档以获取更多信息。建议将每个工作单元封装在
beginRequest
、endRequest
对中,以便在请求开始或结束时没有打开事务,并且没有跨请求边界的本地状态依赖。已提交的数据库状态不是本地的。- API注释:
-
此方法应由连接池管理器使用。
连接池管理器应在将连接返回给调用者之前在基础连接上调用
beginRequest
。如果:
- 连接池缓存
PooledConnection
对象 - 在应用程序调用
getConnection
时返回逻辑连接句柄 - 通过在返回
PooledConnection
之前调用Connection.close
关闭逻辑Connection
beginRequest
。 - 连接池缓存
- 实现要求:
- 默认实现是一个空操作。
- 抛出:
-
SQLException
- 如果发生错误 - 自版本:
- 9
- 参见:
-
endRequest
驱动程序提示请求已完成,这是一个独立的工作单元。调用beginRequest
和endRequest
不是嵌套的。多次调用endRequest
而没有调用beginRequest
是不会报错的。第一次调用endRequest
标记请求已完成,随后的调用将被视为无操作。如果在没有初始调用beginRequest
的情况下调用endRequest
,也将被视为无操作。此方法的确切行为是特定于供应商的。特别是实现可能会检测到指示对其他工作的依赖性的条件,例如打开的事务。建议但不是必须的,如果存在活动事务并且调用了
endRequest
,则实现应抛出SQLException
。- API 注意:
-
此方法应由连接池管理器使用。
当应用程序将连接返回到连接池时,连接池管理器应在基础连接上调用
endRequest
。如果连接池满足以下条件,则连接池管理器不需要调用
endRequest
:- 连接池缓存
PooledConnection
对象 - 应用程序调用
getConnection
时返回逻辑连接句柄 - 在将
PooledConnection
返回到缓存之前通过调用Connection.close
关闭逻辑Connection
- 连接池缓存
- 实现要求:
- 默认实现是无操作。
- 抛出:
-
SQLException
- 如果发生错误 - 自版本:
- 9
- 参见:
-
setShardingKeyIfValid
default boolean setShardingKeyIfValid(ShardingKey shardingKey, ShardingKey superShardingKey, int timeout) throws SQLException 设置和验证此连接的分片键。分片键可以指定为null
值。null
分片键的有效性是特定于供应商的。有关更多信息,请参阅供应商的文档。- API 注意:
-
此方法验证分片键对
Connection
是否有效。超时值指示驱动程序在setShardingKeyIfValid
返回false之前应等待Connection
验证分片键的有效性的时间。 - 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException
。 - 参数:
-
shardingKey
- 要针对此连接验证的分片键。分片键可以是null
-
superShardingKey
- 要针对此连接验证的超级分片键。超级分片键可以是null
。 -
timeout
- 预期完成验证过程之前的秒数,否则将中止验证过程。值为0表示验证过程不会超时。 - 返回:
- 如果连接有效且分片键在此连接上有效且设置,则返回true;如果分片键无效或超时期限在操作完成之前到期,则返回false。
- 抛出:
-
SQLException
- 如果执行此验证时发生错误;在未指定shardingKey
的情况下指定了superShardingKey
;在关闭的connection
上调用了此方法;或timeout
值为负数。 -
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 自版本:
- 9
- 参见:
-
setShardingKeyIfValid
设置和验证此连接的分片键。分片键可以指定为null
值。null
分片键的有效性是特定于供应商的。有关更多信息,请参阅供应商的文档。- API 注意:
-
此方法验证分片键对
Connection
是否有效。超时值指示驱动程序在setShardingKeyIfValid
返回false之前应等待Connection
验证分片键的有效性的时间。 - 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException
。 - 参数:
-
shardingKey
- 要针对此连接验证的分片键。分片键可以是null
-
timeout
- 预期完成验证过程之前的秒数,否则将中止验证过程。值为0表示验证过程不会超时。 - 返回:
- 如果连接有效且分片键有效且可在此连接上设置,则返回true;如果分片键无效或超时期限在操作完成之前到期,则返回false。
- 抛出:
-
SQLException
- 如果执行此验证时发生错误;在关闭的connection
上调用了此方法;或timeout
值为负数。 -
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 自版本:
- 9
- 参见:
-
setShardingKey
default void setShardingKey(ShardingKey shardingKey, ShardingKey superShardingKey) throws SQLException 指定要在此连接中使用的分片键和超级分片键- API 注意:
-
此方法设置指定的分片键,但不需要与数据库进行往返以验证分片键对
Connection
是否有效。 - 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException
。 - 参数:
-
shardingKey
- 要在此连接上设置的分片键。分片键可以是null
-
superShardingKey
- 要在此连接上设置的超级分片键。超级分片键可以是null
- 抛出:
-
SQLException
- 如果设置分片键时发生错误;在关闭的connection
上调用了此方法;或指定了superShardingKey
而没有指定shardingKey
-
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 自版本:
- 9
- 参见:
-
setShardingKey
指定要在此连接中使用的分片键- API 注意:
-
此方法设置指定的分片键,但不需要与数据库进行往返以验证分片键对
Connection
是否有效。 - 实现要求:
-
默认实现将抛出
SQLFeatureNotSupportedException
。 - 参数:
-
shardingKey
- 要在此连接上设置的分片键。分片键可以是null
- 抛出:
-
SQLException
- 如果设置分片键时发生错误;或在关闭的connection
上调用了此方法 -
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 自版本:
- 9
- 参见:
-