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