-
- 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 intTRANSACTION_NONE指示不支持事务的常量。static intTRANSACTION_READ_COMMITTED一个常数表示防止脏读; 可能会发生不可重复的读取和幻像读取。static intTRANSACTION_READ_UNCOMMITTED一个常量表示可能会发生脏读,不可重复读和幻读。static intTRANSACTION_REPEATABLE_READ一个常量表示防止了脏读和不可重复读; 可以发生幻影读取。static intTRANSACTION_SERIALIZABLE一个常数表示防止脏读,不可重复读和幻影读。
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 voidabort(Executor executor)终止打开的连接。default voidbeginRequest()向司机提示,一个请求,一个独立的工作单位,正在开始这个连接。voidclearWarnings()清除此Connection对象报告的所有警告。voidclose()立即释放此Connection对象的数据库和JDBC资源,而不是等待它们自动释放。voidcommit()使上次提交/回滚之后所做的所有更改都将永久性,并释放此Connection对象当前持有的任何数据库锁。ArraycreateArrayOf(String typeName, Object[] elements)用于创建Array对象的Factory方法。BlobcreateBlob()构造一个实现Blob接口的对象。ClobcreateClob()构造一个实现Clob接口的对象。NClobcreateNClob()构造一个实现NClob接口的对象。SQLXMLcreateSQLXML()构造一个实现SQLXML接口的对象。StatementcreateStatement()创建一个Statement对象,用于将SQL语句发送到数据库。StatementcreateStatement(int resultSetType, int resultSetConcurrency)创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。StatementcreateStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)创建一个Statement对象,该对象将生成具有给定类型,并发和ResultSet对象。StructcreateStruct(String typeName, Object[] attributes)用于创建Struct对象的工厂方法。default voidendRequest()向司机提示,要求,独立工作单位已经完成。booleangetAutoCommit()检索此Connection对象的当前自动提交模式。StringgetCatalog()检索此Connection对象的当前目录名称。PropertiesgetClientInfo()返回包含驱动程序支持的每个客户端信息属性的名称和当前值的列表。StringgetClientInfo(String name)返回由name指定的客户端信息属性的值。intgetHoldability()检索使用此Connection对象创建的ResultSet对象的当前可Connection。DatabaseMetaDatagetMetaData()检索一个DatabaseMetaData对象,其中包含有关此Connection对象表示连接的数据库的元数据。intgetNetworkTimeout()检索驱动程序等待数据库请求完成的毫秒数。StringgetSchema()检索此Connection对象的当前模式名称。intgetTransactionIsolation()检索此Connection对象的当前事务隔离级别。Map<String,Class<?>>getTypeMap()检索与该Map对象关联的Connection对象。SQLWarninggetWarnings()检索此Connection对象上的通话报告的第一个警告。booleanisClosed()检索此Connection对象是否已关闭。booleanisReadOnly()检索此Connection对象是否处于只读模式。booleanisValid(int timeout)如果连接尚未关闭并且仍然有效,则返回true。StringnativeSQL(String sql)将给定的SQL语句转换为系统的本机SQL语法。CallableStatementprepareCall(String sql)创建一个CallableStatement对象来调用数据库存储过程。CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency)创建一个CallableStatement对象,该对象将生成具有给定类型和并发性的ResultSet对象。CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)创建一个CallableStatement对象,它将生成具有给定类型和并发性的ResultSet对象。PreparedStatementprepareStatement(String sql)创建一个PreparedStatement对象,用于将参数化的SQL语句发送到数据库。PreparedStatementprepareStatement(String sql, int autoGeneratedKeys)创建一个默认的PreparedStatement对象,该对象具有检索自动生成的密钥的能力。PreparedStatementprepareStatement(String sql, int[] columnIndexes)创建一个默认的PreparedStatement对象,能够返回由给定数组指定的自动生成的键。PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency)创建一个PreparedStatement对象,该对象将使用给定类型和并发性生成ResultSet对象。PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)创建一个PreparedStatement对象,该对象将生成具有给定类型,并发和ResultSet对象。PreparedStatementprepareStatement(String sql, String[] columnNames)创建一个默认的PreparedStatement对象,能够返回给定数组指定的自动生成的键。voidreleaseSavepoint(Savepoint savepoint)从当前事务中删除指定的Savepoint和后续的Savepoint对象。voidrollback()撤消在当前事务中所做的所有更改,并释放此Connection对象当前持有的任何数据库锁。voidrollback(Savepoint savepoint)撤消在给定的Savepoint对象设置后进行的所有更改。voidsetAutoCommit(boolean autoCommit)将此连接的自动提交模式设置为给定状态。voidsetCatalog(String catalog)设置给定的目录名称,以便选择要在其中工作的Connection对象的数据库的子空间。voidsetClientInfo(String name, String value)将由name指定的客户端信息属性的值设置为由值指定的值。voidsetClientInfo(Properties properties)设置连接的客户端信息属性的值。voidsetHoldability(int holdability)将使用此Connection对象创建的对象的默认ResultSet更改为给定的可保存性。voidsetNetworkTimeout(Executor executor, int milliseconds)设置Connection的最大周期或从Connection创建的Connection将等待数据库回复任何一个请求。voidsetReadOnly(boolean readOnly)将此连接设置为只读模式,作为驱动程序的提示以启用数据库优化。SavepointsetSavepoint()在当前事务中创建一个未命名的保存点,并返回表示它的新的Savepoint对象。SavepointsetSavepoint(String name)在当前事务中创建具有给定名称的保存点,并返回表示它的新的Savepoint对象。voidsetSchema(String schema)设置要访问的给定模式名称。default voidsetShardingKey(ShardingKey shardingKey)指定与此Connection一起使用的shardingKeydefault voidsetShardingKey(ShardingKey shardingKey, ShardingKey superShardingKey)指定与此连接一起使用的shardingKey和superShardingKeydefault booleansetShardingKeyIfValid(ShardingKey shardingKey, int timeout)设置并验证此连接的分片密钥。default booleansetShardingKeyIfValid(ShardingKey shardingKey, ShardingKey superShardingKey, int timeout)设置并验证此连接的分片密钥。voidsetTransactionIsolation(int level)尝试将此Connection对象的事务隔离级别更改为给定的对象。voidsetTypeMap(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数组映射到给定类别为Objectjava.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
-
-