-
- All Superinterfaces:
-
AutoCloseable
,Wrapper
public interface Connection extends 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
-
-
Field Summary
Fields Modifier and Type Field 描述 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 Modifier and Type 方法 描述 void
abort(Executor executor)
终止打开的连接。default void
beginRequest()
向司机提示,一个请求,一个独立的工作单位,正在开始这个连接。void
clearWarnings()
清除此Connection
对象报告的所有警告。void
close()
立即释放此Connection
对象的数据库和JDBC资源,而不是等待它们自动释放。void
commit()
使上次提交/回滚之后所做的所有更改都将永久性,并释放此Connection
对象当前持有的任何数据库锁。Array
createArrayOf(String typeName, Object[] elements)
用于创建Array对象的Factory方法。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
对象的当前可Connection
。DatabaseMetaData
getMetaData()
检索一个DatabaseMetaData
对象,其中包含有关此Connection
对象表示连接的数据库的元数据。int
getNetworkTimeout()
检索驱动程序等待数据库请求完成的毫秒数。String
getSchema()
检索此Connection
对象的当前模式名称。int
getTransactionIsolation()
检索此Connection
对象的当前事务隔离级别。Map<String,Class<?>>
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指定的客户端信息属性的值设置为由值指定的值。void
setClientInfo(Properties properties)
设置连接的客户端信息属性的值。void
setHoldability(int holdability)
将使用此Connection
对象创建的对象的默认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)
指定与此连接一起使用的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,Class<?>> map)
安装给定TypeMap
对象的类型映射此Connection
对象。-
Methods inherited from interface java.sql.Wrapper
isWrapperFor, unwrap
-
-
-
-
字段详细信息
-
TRANSACTION_NONE
static final int TRANSACTION_NONE
指示不支持事务的常量。- 另请参见:
- Constant Field Values
-
TRANSACTION_READ_UNCOMMITTED
static final int TRANSACTION_READ_UNCOMMITTED
一个常量表示可能会发生脏读,不可重复读和幻读。 此级别允许在该行的任何更改被提交之前,一个事务更改的行被另一个事务读取(“脏读”)。 如果任何更改被回滚,则第二个事务将检索到无效的行。- 另请参见:
- Constant Field Values
-
TRANSACTION_READ_COMMITTED
static final int TRANSACTION_READ_COMMITTED
一个常数表示防止脏读; 可能会发生不可重复的读取和幻像读取。 此级别仅禁止一个事务读取其中未提交的更改的行。- 另请参见:
- Constant Field Values
-
TRANSACTION_REPEATABLE_READ
static final int TRANSACTION_REPEATABLE_READ
一个常量表示防止了脏读和不可重复读; 可以发生幻影读取。 该级别禁止事务读取其中未提交的更改的行,并且还禁止一个事务读取行的情况,第二事务更改行,并且第一个事务重新读取该行,第二次获取不同的值( “不可重复读”)。- 另请参见:
- Constant Field Values
-
TRANSACTION_SERIALIZABLE
static final int TRANSACTION_SERIALIZABLE
一个常数表示防止脏读,不可重复读和幻影读。 此级别包括在禁止TRANSACTION_REPEATABLE_READ
,并进一步禁止在那里一个事务读取满足所有行的情况WHERE
条件,第二个事务插入一行满足该WHERE
条件,和第一个事务重新读取为相同的条件下,检索附加的“幻影“行在第二读。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
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参数占位符 - 结果
-
一个新的默认的
PreparedStatement
对象包含预编译的SQL语句 - 异常
-
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调用转义语法指定此语句。 - 结果
-
一个新的默认的
CallableStatement
对象包含预编译的SQL语句 - 异常
-
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语句(如插入,更新或删除)和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
- 结果
-
一个新的PreparedStatement对象,其中包含预编译的SQL语句,该语句将产生具有给定类型和并发性的
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
Map<String,Class<?>> 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,Class<?>> map) throws SQLException
将给定的TypeMap
对象作为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
更改为给定的可保存性。ResultSet
对象的默认可保持性可以通过调用DatabaseMetaData.getResultSetHoldability()
来确定。- 参数
-
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
对象的当前可Connection
。- 结果
-
ResultSet.HOLD_CURSORS_OVER_COMMIT
,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
常量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
常量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
接口的对象,Clob
在闭合连接上调用此方法或发生数据库访问错误。 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型 - 从以下版本开始:
- 1.6
-
createBlob
Blob createBlob() throws SQLException
构造实现Blob
接口的对象。 最初返回的对象不包含任何数据。setBinaryStream
和setBytes
方法的Blob
接口可用于向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指定的客户端信息属性的值设置为由值指定的值。应用程序可以使用
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对象的Factory方法。注意:当使用
createArrayOf
创建映射到原始数据类型的数组对象时,实现定义Array
对象是否是该基元数据类型的数组或Object
的数组。注意: JDBC驱动程序负责将元素
Object
数组映射到给定类别为Object
java.sql.Types中定义的默认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
- 填充返回对象的属性 - 结果
- 一个映射到给定SQL类型并使用给定属性填充的Struct对象
- 异常
-
SQLException
- 如果发生数据库错误,typeName为空,或者在闭合连接上调用此方法 -
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
调用此方法Connection
-
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 从以下版本开始:
- 1.7
- 另请参见:
-
setNetworkTimeout(java.util.concurrent.Executor, int)
-
beginRequest
default void beginRequest() throws SQLException
向司机提示,一个请求,一个独立的工作单位,正在开始这个连接。 每个请求与客户端或服务器上连接的本地状态相关的所有其他请求都是独立的。 工作之间做beginRequest
,endRequest
对不会依赖于连接上进行任何其他工作,如任何要求的其他请求或外部的一部分。 请求可以包括多个事务。 可能依赖于已提交的数据库状态,因为它不是本地连接。本地状态被定义为与客户端或数据库中不可透明再现的当前连接本地连接的任何状态。
致电
beginRequest
和endRequest
未嵌套。 对beginRequest
多次呼叫,无endRequest
呼叫endRequest
不是错误。 第一个beginRequest
调用标记为请求的开始,后续调用被视为无操作使用
beginRequest
和endRequest
是可选的,供应商特定的,并且应该在很大程度上是透明的。 特别地,实现可以检测指示对诸如开放事务之类的其他工作的依赖的条件。 建议尽管不需要,如果有一个活动的事务和beginRequest
被调用,这个实现会抛出一个SQLException
。 使用这些方法可以提高性能或提供其他好处。 有关其他信息,请咨询供应商文档。建议在
beginRequest
对中包含每个工作单元,endRequest
在请求的开始或结束时没有打开的事务,并且不依赖跨越请求边界的本地状态。 提交的数据库状态不是本地的。- API Note:
-
Connection方法由Connection pooling管理器使用。
在返回到呼叫者的连接之前,池管理器应该在基础连接上调用
beginRequest
。池管理器不需要调用
beginRequest
如果:- 连接池缓存
PooledConnection
对象 - 当应用程序调用
getConnection
时,返回逻辑连接句柄 - 逻辑
Connection
通过调用关闭Connection.close
久违的前PooledConnection
到缓存。
- 连接池缓存
- 实现要求:
- 默认的实现是无操作的。
- 异常
-
SQLException
- 如果发生错误 - 从以下版本开始:
- 9
- 另请参见:
-
endRequest()
,PooledConnection
-
endRequest
default void endRequest() throws SQLException
向司机提示,要求,独立工作单位已经完成。 拨打beginRequest
和endRequest
都不嵌套。 对endRequest
多次呼叫,无需beginRequest
呼叫beginRequest
不是错误。 第一个endRequest
调用标记请求完成,后续调用被视为无操作。 如果endRequest
被调用,而不是初始调用beginRequest
是一个no-op。该方法的具体行为是供应商特定的。 特别地,实现可以检测指示对诸如开放事务之类的其他工作的依赖的条件。 建议尽管不需要,如果有一个活动的事务和
endRequest
被调用,这个实现会抛出一个SQLException
。- API Note:
-
Connection方法由Connection pooling管理器使用。
当应用程序将连接返回到连接池时,池管理器应调用底层连接上的
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
。 超时值指示Connection
在setShardingKeyIfValid
返回false之前等待Connection
验证分片密钥有效的时间。 - 实现要求:
-
默认实现将抛出一个
SQLFeatureNotSupportedException
。 - 参数
-
shardingKey
- 要对此连接进行验证的分片密钥。 分片键可能是null
-
superShardingKey
- 要对此连接进行验证的超级分片密钥。 超级分片键可以是null
。 -
timeout
- 预计在完成验证过程之前的几秒钟内的时间,否则验证过程将中止。 值为0表示验证过程不会超时。 - 结果
- 如果连接有效并且分片键在此连接上有效并设置,则为true; 如果分片键无效或超时期限在操作完成之前到期,则为false。
- 异常
-
SQLException
- 执行此验证时是否发生错误; 一个superSharedingKey
指定没有一个shardingKey
; 这个方法叫做一个封闭的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。
- 异常
-
SQLException
- 执行此验证时是否有错误; 这个方法是在关闭的connection
调用的connection
; 或timeout
值为负数。 -
SQLFeatureNotSupportedException
- 如果驱动程序不支持分片 - 从以下版本开始:
- 9
- 另请参见:
-
ShardingKey
,ShardingKeyBuilder
-
setShardingKey
default void setShardingKey(ShardingKey shardingKey, ShardingKey superShardingKey) throws SQLException
指定与此连接一起使用的shardingKey和superShardingKey- API Note:
-
此方法设置指定的分片键,但不需要往返数据库,以验证分片键是否适用于
Connection
。 - 实现要求:
-
默认实现将抛出一个
SQLFeatureNotSupportedException
。 - 参数
-
shardingKey
- 在此连接上设置的分片密钥。 分片键可以是null
-
superShardingKey
- 在此连接上设置的超级分片密钥。 超级分片键可以是null
- 异常
-
SQLException
- 如果设置分片键出现错误; 这个方法被调用在一个封闭的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
-
-