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的自定义映射。 当UDT从数据源中检索该方法ResultSet.getObject
,所述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);
Modifier and Type | Field and Description |
---|---|
static int |
TRANSACTION_NONE
指示不支持事务的常量。
|
static int |
TRANSACTION_READ_COMMITTED
一个常数表示防止脏读;
可能会发生不可重复的读取和幻像读取。
|
static int |
TRANSACTION_READ_UNCOMMITTED
一个常量表示可能会发生脏读,不可重复读和幻读。
|
static int |
TRANSACTION_REPEATABLE_READ
一个常量表示防止了脏读和不可重复读;
可以发生幻影读取。
|
static int |
TRANSACTION_SERIALIZABLE
一个常数表示防止脏读,不可重复读和幻影读。
|
Modifier and Type | Method and Description |
---|---|
void |
abort(Executor executor)
终止打开的连接。
|
void |
clearWarnings()
清除为此
Connection 对象报告的所有警告。
|
void |
close()
Connection 发布此
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对象的工厂方法。
|
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(Properties properties)
设置连接的客户端信息属性的值。
|
void |
setClientInfo(String name, String value)
将由name指定的客户端信息属性的值设置为由值指定的值。
|
void |
setHoldability(int holdability)
将使用此
Connection 对象创建的
ResultSet 对象的默认保持性更改为给定的可保存性。
|
void |
setNetworkTimeout(Executor executor, int milliseconds)
设置最大周期a
Connection 或从
Connection 创建的
Connection 将等待数据库回复任何一个请求。
|
void |
setReadOnly(boolean readOnly)
将此连接设置为只读模式,作为驱动程序的提示以启用数据库优化。
|
Savepoint |
setSavepoint()
在当前事务中创建一个未命名的保存点,并返回代表它的新的
Savepoint 对象。
|
Savepoint |
setSavepoint(String name)
在当前事务中创建具有给定名称的保存点,并返回代表它的新的
Savepoint 对象。
|
void |
setSchema(String schema)
设置要访问的给定模式名称。
|
void |
setTransactionIsolation(int level)
尝试将此
Connection 对象的事务隔离级别更改为给定的对象。
|
void |
setTypeMap(Map<String,类<?>> map)
将给定的
TypeMap 对象作为此
Connection 对象的类型映射。
|
isWrapperFor, unwrap
static final int TRANSACTION_NONE
static final int TRANSACTION_READ_UNCOMMITTED
static final int TRANSACTION_READ_COMMITTED
static final int TRANSACTION_REPEATABLE_READ
static final int TRANSACTION_SERIALIZABLE
TRANSACTION_REPEATABLE_READ
并进一步禁止在那里一个事务读取满足所有行的情况WHERE
条件,第二个事务插入一行满足该WHERE
条件,和第一个事务重新读取为相同的条件下,检索附加的“幻影“行在第二读。
Statement createStatement() throws SQLException
Statement
对象,用于将SQL语句发送到数据库。
没有参数的SQL语句通常使用Statement
对象执行。
如果相同的SQL语句执行了很多次,那么使用PreparedStatement
对象可能会更有效。
使用返回的Statement
对象创建的结果集将默认为TYPE_FORWARD_ONLY
,并发级别为CONCUR_READ_ONLY
。 创建的结果集的可保持性可以通过调用getHoldability()
来确定 。
Statement
对象
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
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
- 如果发生数据库访问错误或在闭合连接上调用此方法
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
- 如果发生数据库访问错误或在闭合连接上调用此方法
String nativeSQL(String sql) throws SQLException
sql
- 可能包含一个或多个“?”的SQL语句
参数占位符
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
void setAutoCommit(boolean autoCommit) throws SQLException
commit
或方法rollback
。
默认情况下,新连接处于自动提交模式。
当语句完成时,发生提交。 语句完成的时间取决于SQL语句的类型:
CallableStatement
对象或返回多个结果的语句,当所有关联的结果集都已关闭并且已检索到所有更新计数和输出参数时,该语句将完成。 注意:如果在事务中调用此方法并更改了自动提交模式,则事务将被提交。 如果调用了setAutoCommit
,并且自动提交模式没有改变,则调用是无操作的。
autoCommit
- true
启用自动提交模式;
false
禁用它
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用setAutoCommit(true),或者在闭合连接上调用此方法
getAutoCommit()
boolean getAutoCommit() throws SQLException
Connection
对象的当前自动提交模式。
Connection
对象的自动提交模式的当前状态
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
setAutoCommit(boolean)
void commit() throws SQLException
Connection
对象当前持有的任何数据库锁。
只有当自动提交模式被禁用时,才应该使用此方法。
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用此方法,如果在闭合连接上调用此方法,或此
Connection
对象处于自动提交模式
setAutoCommit(boolean)
void rollback() throws SQLException
Connection
对象当前持有的任何数据库锁。
只有当自动提交模式被禁用时,才应该使用此方法。
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用此方法,此方法在闭合连接上调用或此
Connection
对象处于自动提交模式
setAutoCommit(boolean)
void close() throws SQLException
Connection
释放此Connection
对象的数据库和JDBC资源,而不是等待它们自动释放。
在已关闭的Connection
对象上调用方法close
是无操作的。
强烈建议在调用close
方法之前,应用程序显式地提交或回滚活动事务。 如果调用了close
方法,并且存在活动事务,则结果是实现定义的。
close
在界面
AutoCloseable
SQLException
- 如果发生数据库访问错误,则为SQLException
boolean isClosed() throws SQLException
Connection
对象是否已关闭。
如果已经调用了方法close
或者发生了某些致命错误,则连接被关闭。
这种方法只有在方法Connection.close
被调用之后被调用才能保证返回true
。
通常无法调用此方法来确定与数据库的连接是有效还是无效。 典型的客户端可以通过捕获尝试尝试时可能抛出的任何异常来确定连接无效。
true
如果这个Connection
对象是关闭的;
false
如果它仍然是开放的
SQLException
- 如果发生数据库访问错误
DatabaseMetaData getMetaData() throws SQLException
DatabaseMetaData
对象包含有关哪个这个数据库的元数据Connection
对象表示的连接。
元数据包括有关数据库表,其支持的SQL语法,其存储过程,此连接的功能等的信息。
DatabaseMetaData
对象为这个
Connection
对象
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
void setReadOnly(boolean readOnly) throws SQLException
注意:在事务中无法调用此方法。
readOnly
- true
启用只读模式;
false
禁用它
SQLException
- 如果发生数据库访问错误,则在闭合连接上调用此方法,或者在事务期间调用此方法
boolean isReadOnly() throws SQLException
Connection
对象是否处于只读模式。
true
如果这个Connection
对象是只读的;
false
否则
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法,则为SQLException
void setCatalog(String catalog) throws SQLException
Connection
对象的数据库的子空间。
如果驱动程序不支持目录,它将默认忽略此请求。
调用setCatalog
对以前创建或准备的Statement
对象没有影响。 当调用Connection
方法prepareStatement
或prepareCall
时,是否立即执行DBMS准备操作的Connection
。 为了最大的可移植性, setCatalog
应该在创建或准备Statement
之前调用。
catalog
- 目录的名称(此
Connection
对象的数据库中的子空间)
SQLException
- 如果发生数据库访问错误或在关闭的连接上调用此方法
getCatalog()
String getCatalog() throws SQLException
Connection
对象的当前目录名称。
null
如果没有
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
setCatalog(java.lang.String)
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()
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)
SQLWarning getWarnings() throws SQLException
Connection
对象的呼叫报告的第一个警告。
如果有多个警告,则后续警告将链接到第一个警告,并可以通过调用SQLWarning.getNextWarning
的警告方法SQLWarning.getNextWarning
来检索。
这种方法可能不会在封闭的连接上被调用; 这样做会造成SQLException
被抛出。
注意:随后的警告将链接到此SQLWarning。
SQLWarning
对象或
null
如果没有
SQLException
- 如果发生数据库访问错误或在已关闭的连接上调用此方法
SQLWarning
void clearWarnings() throws SQLException
Connection
对象报告的所有警告。
调用此方法后,方法getWarnings
返回null
,直到为该Connection
对象报告新的警告。
SQLException
- 如果发生数据库访问错误或在关闭连接上调用此方法,则为SQLException
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
ResultSet
对象的新的
Statement
对象
SQLException
-如果发生数据库访问错误,该方法被称为关闭的连接上,或者给定参数不是
ResultSet
常数指示类型和并发
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型和结果集并发。
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
ResultSet
对象
SQLException
-如果发生数据库访问错误,该方法被称为关闭的连接上,或者给定参数不是
ResultSet
常数指示类型和并发
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型和结果集并发。
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
对象将生成具有给定类型和并发的
ResultSet
对象
SQLException
-如果发生数据库访问错误,该方法被称为关闭的连接上,或者给定参数不是
ResultSet
常数指示类型和并发
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型和结果集并发。
Map<String,类<?>> getTypeMap() throws SQLException
Map
与此相关联的对象Connection
对象。
除非应用程序已添加条目,否则返回的类型映射将为空。
你必须调用setTypeMap
在更改后Map
从返回的对象getTypeMap
为JDBC驱动程序可以创建的一个内部复制Map
传递给对象setTypeMap
:
Map<String,Class<?>> myMap = con.getTypeMap();
myMap.put("mySchemaName.ATHLETES", Athletes.class);
con.setTypeMap(myMap);
java.util.Map
与此相关联的对象
Connection
对象
SQLException
- 如果发生数据库访问错误或在关闭的连接上调用此方法
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
setTypeMap(java.util.Map<java.lang.String, java.lang.Class<?>>)
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驱动程序不支持此方法
getTypeMap()
void setHoldability(int holdability) throws SQLException
Connection
对象创建的ResultSet
对象的默认保持性更改为给定的可保存性。
ResultSet
对象的默认保持性可以通过调用DatabaseMetaData.getResultSetHoldability()
来确定 。
holdability
- a ResultSet
可持续性常数;
ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
SQLException
- 如果发生数据库访问,则在闭合连接上调用此方法,或者给定参数不是
ResultSet
保持性的88436366797961常量
SQLFeatureNotSupportedException
- 如果不支持给定的可保持性
getHoldability()
, DatabaseMetaData.getResultSetHoldability()
, ResultSet
int getHoldability() throws SQLException
Connection
对象创建的
ResultSet
对象的当前保持性。
ResultSet.HOLD_CURSORS_OVER_COMMIT
或
ResultSet.CLOSE_CURSORS_AT_COMMIT
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
setHoldability(int)
, DatabaseMetaData.getResultSetHoldability()
, ResultSet
Savepoint setSavepoint() throws SQLException
Savepoint
对象。
如果setSavepoint在活动事务之外被调用,那么将在这个新创建的保存点处启动一个事务。
Savepoint
对象
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用此方法,此方法在闭合连接上调用,或此
Connection
对象当前处于自动提交模式
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
Savepoint
Savepoint setSavepoint(String name) throws SQLException
Savepoint
对象。
如果setSavepoint在活动事务之外被调用,那么将在这个新创建的保存点处启动一个事务。
name
- 一个
String
保存点名称的String
Savepoint
对象
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用此方法,此方法在闭合连接上调用,或此
Connection
对象当前处于自动提交模式
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
Savepoint
void rollback(Savepoint savepoint) throws SQLException
Savepoint
对象设置后进行的所有更改。
只有当自动提交被禁用时,才应该使用此方法。
savepoint
- 要回滚到的
Savepoint
对象
SQLException
- 如果发生数据库访问错误,则在参与分布式事务时调用此方法,此方法在闭合连接上调用,
Savepoint
对象不再有效,或此
Connection
对象当前处于自动提交模式
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
Savepoint
, rollback()
void releaseSavepoint(Savepoint savepoint) throws SQLException
Savepoint
和随后Savepoint
从目前的交易对象。
对删除保存点的任何引用将导致抛出SQLException
。
savepoint
- 要删除的
Savepoint
对象
SQLException
- 如果发生数据库访问错误,则在闭合连接上调用此方法,或者给定的
Savepoint
对象在当前事务中不是有效的保存点
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
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
之一:
ResultSet.CONCUR_READ_ONLY
或
ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- 以下ResultSet
ResultSet
之一:
ResultSet.HOLD_CURSORS_OVER_COMMIT
或
ResultSet.CLOSE_CURSORS_AT_COMMIT
Statement
对象,将产生
ResultSet
对象具有给定类型,并发性和可保存
SQLException
-如果发生数据库访问错误,该方法被称为关闭的连接上,或者给定参数不是
ResultSet
常数指示类型,并发性和可保存性
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型,则结果集可持续性和结果集并发。
ResultSet
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
之一:
ResultSet.CONCUR_READ_ONLY
或
ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- 以下ResultSet
ResultSet
之一:
ResultSet.HOLD_CURSORS_OVER_COMMIT
或
ResultSet.CLOSE_CURSORS_AT_COMMIT
PreparedStatement
对象,包含预编译的SQL语句,将产生
ResultSet
对象具有给定类型,并发性和可保存
SQLException
-如果发生数据库访问错误,该方法被称为关闭的连接上,或者给定参数不是
ResultSet
常数指示类型,并发性和可保存性
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型,则结果集可持续性和结果集并发。
ResultSet
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
之一:
ResultSet.CONCUR_READ_ONLY
或
ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- 以下ResultSet
ResultSet
之一:
ResultSet.HOLD_CURSORS_OVER_COMMIT
或
ResultSet.CLOSE_CURSORS_AT_COMMIT
CallableStatement
对象,包含预编译的SQL语句,将产生
ResultSet
对象具有给定类型,并发性和可保存
SQLException
- 如果发生数据库访问错误,则在闭合连接上调用此方法,或者给定参数不是
ResultSet
常量,指示类型,并发性和可保持性
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型,则结果集可持续性和结果集并发。
ResultSet
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
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驱动程序不支持此方法
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驱动程序不支持此方法
Clob createClob() throws SQLException
Clob
接口。
最初返回的对象不包含任何数据。
的setAsciiStream
, setCharacterStream
和setString
所述的方法Clob
接口可用于将数据添加到所述Clob
。
Clob
接口的对象
SQLException
- 如果无法构造实现
Clob
接口的对象,则在
Clob
连接上调用此方法或发生数据库访问错误。
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
Blob createBlob() throws SQLException
Blob
接口。
最初返回的对象不包含任何数据。
的setBinaryStream
种setBytes
所述的方法Blob
接口可用于将数据添加到所述Blob
。
Blob
接口的对象
SQLException
- 如果无法构建实现
Blob
接口的对象,则在
Blob
连接上调用此方法或发生数据库访问错误。
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
NClob createNClob() throws SQLException
NClob
接口。
最初返回的对象不包含任何数据。
的setAsciiStream
, setCharacterStream
和setString
所述的方法NClob
接口可用于将数据添加到所述NClob
。
NClob
接口的对象
SQLException
- 如果无法构建实现
NClob
接口的对象,则会在
NClob
连接上调用此方法或发生数据库访问错误。
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
SQLXML createSQLXML() throws SQLException
SQLXML
接口。
最初返回的对象不包含任何数据。
createXmlStreamWriter
对象和setString
方法的SQLXML
接口可用于向SQLXML
对象添加数据。
SQLXML
接口的对象
SQLException
- 如果无法构建实现
SQLXML
接口的对象,则在
SQLXML
连接上调用此方法或发生数据库访问错误。
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
boolean isValid(int timeout) throws SQLException
驱动程序提交的验证连接的查询应在当前事务的上下文中执行。
timeout
- - 等待数据库操作用于验证连接完成的时间(以秒为单位)。
如果超时时间在操作完成之前到期,则此方法返回false。
值为0表示超时未应用于数据库操作。
SQLException
- 如果为
timeout
提供的值小于0
DatabaseMetaData.getClientInfoProperties()
void setClientInfo(String name, String value) throws SQLClientInfoException
应用程序可以使用DatabaseMetaData.getClientInfoProperties
方法来确定驱动程序支持的客户端信息属性以及可能为每个属性指定的最大长度。
驱动程序将指定的值存储在数据库中的合适位置。 例如在特殊寄存器,会话参数或系统表列中。 为了提高效率,驱动程序可能推迟在数据库中设置值,直到下一次执行或准备语句。 除了将客户端信息存储在数据库中的适当位置之外,这些方法不得改变连接的行为。 提供给这些方法的值仅用于记帐,诊断和调试目的。
如果指定的客户端信息名称不被驱动程序识别,驱动程序将产生警告。
如果为此方法指定的值大于属性的最大长度,则驱动程序可能会截断该值并生成警告或生成一个SQLClientInfoException
。 如果驱动程序生成SQLClientInfoException
,则指定的值未在连接上设置。
以下是标准的客户端信息属性。 驱动程序不需要支持这些属性,但是如果驱动程序支持可以由其中一个标准属性描述的客户端信息属性,则应使用标准属性名称。
name
- 要设置的客户端信息属性的名称
value
- 将客户端信息属性设置为的值。
如果值为null,则指定属性的当前值将被清除。
SQLClientInfoException
- 如果数据库服务器在数据库服务器上设置客户端信息值时返回错误,或者在闭合连接上调用此方法
void setClientInfo(Properties properties) throws SQLClientInfoException
Properties
对象包含要设置的客户端信息属性的名称和值。
属性列表中包含的客户端信息属性集将替换当前连接上的客户端信息属性集。
如果连接上当前设置的属性不存在于属性列表中,则该属性将被清除。
指定空属性列表将清除连接上的所有属性。
见setClientInfo (String, String)
以获取更多信息。
如果在设置任何客户端信息属性时发生错误,则会抛出一个SQLClientInfoException
。 SQLClientInfoException
包含指示哪些客户端信息属性未设置的信息。 客户端信息的状态是未知的,因为某些数据库不允许以原子方式设置多个客户端信息属性。 对于这些数据库,可能在错误发生之前设置了一个或多个属性。
properties
- 要设置的客户端信息属性的列表
SQLClientInfoException
- 如果数据库服务器在数据库服务器上设置clientInfo值时返回错误,或者在闭合连接上调用此方法
setClientInfo(String, String)
String getClientInfo(String name) throws SQLException
应用程序可以使用DatabaseMetaData.getClientInfoProperties
方法来确定驱动程序支持的客户端信息属性。
name
- 要检索的客户端信息属性的名称
SQLException
- 如果数据库服务器在从数据库中获取客户端信息值时返回错误,或者在关闭的连接上调用此方法
DatabaseMetaData.getClientInfoProperties()
Properties getClientInfo() throws SQLException
Properties
对象,其中包含驱动程序支持的每个客户端信息属性的名称和当前值。
SQLException
- 如果数据库服务器在从数据库中获取客户端信息值时返回错误,或者在闭合连接上调用此方法
Array createArrayOf(String typeName, Object[] elements) throws SQLException
注意:当使用createArrayOf
创建映射到原始数据类型的数组对象时,将实现定义Array
对象是否是该Array
元数据类型的数组或Object
的数组。
注意: JDBC驱动程序负责将元素Object
数组映射到给定类Object
定义的默认JDBC SQL类型。 默认映射在JDBC规范的附录B中指定。 如果生成的JDBC类型不是给定typeName的适当类型,那么实现定义是否抛出SQLException
或驱动程序支持结果转换。
typeName
- 数组的元素的类型的SQL名称映射到。
typeName是一个特定于数据库的名称,可能是该数据库支持的内置类型,用户定义类型或标准SQL类型的名称。
这是Array.getBaseTypeName
返回的值
elements
- 填充返回对象的元素
SQLException
- 如果发生数据库错误,JDBC类型不适用于typeName,并且不支持转换,typeName为null或在已关闭的连接上调用此方法
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
Struct createStruct(String typeName, Object[] attributes) throws SQLException
typeName
- 此Struct
对象映射到的SQL结构化类型的SQL类型名称。
typeName是为此数据库定义的用户定义类型的名称。
它是由Struct.getSQLTypeName
返回的值。
attributes
- 填充返回对象的属性
SQLException
- 如果发生数据库错误,则typeName为空,或者在闭合连接上调用此方法
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此数据类型
void setSchema(String schema) throws SQLException
如果驱动程序不支持模式,它将默认忽略此请求。
调用setSchema
对以前创建或准备的Statement
对象没有影响。 当调用Connection
方法prepareStatement
或prepareCall
时,是否立即执行DBMS准备操作的Connection
。 为了最大的可移植性, setSchema
应该在创建或准备Statement
之前调用。
schema
- 要工作的模式的名称
SQLException
- 如果发生数据库访问错误或在闭合连接上调用此方法
getSchema()
String getSchema() throws SQLException
Connection
对象的当前模式名称。
null
如果没有
SQLException
- 如果发生数据库访问错误或在已关闭连接上调用此方法
setSchema(java.lang.String)
void abort(Executor executor) throws SQLException
abort
导致:
SQLException
。 调用abort
标记连接关闭并释放任何资源。 在封闭的连接上调用abort
是无操作的。
可能的是,连接所持有的资源的中止和释放可能需要较长的时间。 当abort
方法返回时,连接将被标记为已关闭和Executor
这是作为一个参数传递中断仍可以执行任务,以释放资源。
此方法检查在允许该方法继续之前,有一个SQLPermission
对象。 如果一个SecurityManager
存在,并且它的checkPermission
方法拒绝调用abort
,这个方法抛出一个java.lang.SecurityException
。
executor
-
Executor
将被
abort
使用的
abort
。
SQLException
- 如果发生数据库访问错误或
executor
是
null
,
SecurityException
- 如果一个安全管理员存在,并且其
checkPermission
方法拒绝调用
abort
SecurityManager.checkPermission(java.security.Permission)
, Executor
void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException
Connection
或从Connection
创建的Connection
将等待数据库回复任何一个请求。
如果有任何请求保持未应答,则等待方法将与返回SQLException
和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驱动程序不支持此方法
SecurityManager.checkPermission(java.security.Permission)
, Statement.setQueryTimeout(int)
, getNetworkTimeout()
, abort(java.util.concurrent.Executor)
, Executor
int getNetworkTimeout() throws SQLException
SQLException
。
SQLException
- 如果发生数据库访问错误或在关闭的
Connection
上调用此方法
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持这种方法
setNetworkTimeout(java.util.concurrent.Executor, int)