JavaTM 2 Platform
Standard Ed. 5.0

java.sql
接口 Connection


public interface Connection

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。

Connection 对象的数据库能够提供信息描述其表、所支持的 SQL 语法、存储过程和此连接的功能等。此信息是使用 getMetaData 方法获得的。

注:默认情况下,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);
 

另请参见:
DriverManager.getConnection(java.lang.String, java.util.Properties), Statement, ResultSet, DatabaseMetaData

字段摘要
static int TRANSACTION_NONE
          指示事务不受支持的常量。
static int TRANSACTION_READ_COMMITTED
          指示防止发生脏读的常量;不可重复读和虚读有可能发生。
static int TRANSACTION_READ_UNCOMMITTED
          指示可以发生脏读 (dirty read)、不可重复读和虚读 (phantom read) 的常量。
static int TRANSACTION_REPEATABLE_READ
          指示防止发生脏读和不可重复读的常量;虚读有可能发生。
static int TRANSACTION_SERIALIZABLE
          指示防止发生脏读、不可重复读和虚读的常量。
 
方法摘要
 void clearWarnings()
          清除为此 Connection 对象报告的所有警告。
 void close()
          立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放。
 void commit()
          使自从上一次提交/回滚以来进行的所有更改成为持久更改,并释放此 Connection 对象当前保存的所有数据库锁定。
 Statement createStatement()
          创建一个 Statement 对象来将 SQL 语句发送到数据库。
 Statement createStatement(int resultSetType, int resultSetConcurrency)
          创建一个 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。
 Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象。
 boolean getAutoCommit()
          检索此 Connection 对象的当前自动提交模式。
 String getCatalog()
          检索此 Connection 对象的当前目录名称。
 int getHoldability()
          检索使用此 Connection 对象创建的 ResultSet 对象的当前可保存性。
 DatabaseMetaData getMetaData()
          获取 DatabaseMetaData 对象,该对象包含关于 Connection 对象连接到的数据库的元数据。
 int getTransactionIsolation()
          检索此 Connection 对象的当前事务隔离级别。
 Map<String,Class<?>> getTypeMap()
          将给定的 TypeMap 对象安装为此 Connection 对象的类型映射表。
 SQLWarning getWarnings()
          检索此 Connection 对象上的调用报告的第一个警告。
 boolean isClosed()
          检索此 Connection 对象是否已经被关闭。
 boolean isReadOnly()
          检索此 Connection 对象是否处于只读模式。
 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 对象。
 void rollback()
          取消在当前事务中进行的所有更改,并释放此 Connection 对象当前保存的所有数据库锁定。
 void rollback(Savepoint savepoint)
          取消设置给定 Savepoint 对象之后进行的所有更改。
 void setAutoCommit(boolean autoCommit)
          将此连接的自动提交模式设置为给定状态。
 void setCatalog(String catalog)
          设置给定目录名称,以便选择要在其中进行工作的此 Connection 对象数据库的子空间。
 void setHoldability(int holdability)
          将使用此 Connection 对象创建的 ResultSet 对象的可保存性 (holdability) 更改为给定可保存性。
 void setReadOnly(boolean readOnly)
          将此连接设置为只读模式,作为驱动程序启用数据库优化的提示。
 Savepoint setSavepoint()
          在当前事务中创建一个未命名的保存点 (savepoint),并返回表示它的新 Savepoint 对象。
 Savepoint setSavepoint(String name)
          在当前事务中创建一个具有给定名称的保存点,并返回表示它的新 Savepoint 对象。
 void setTransactionIsolation(int level)
          试图将此 Connection 对象的事务隔离级别更改为给定的级别。
 void setTypeMap(Map<String,Class<?>> map)
          安装给定的 TypeMap 对象作为此 Connection 对象的特定类型映射。
 

字段详细信息

TRANSACTION_NONE

static final int TRANSACTION_NONE
指示事务不受支持的常量。

另请参见:
常量字段值

TRANSACTION_READ_UNCOMMITTED

static final int TRANSACTION_READ_UNCOMMITTED
指示可以发生脏读 (dirty read)、不可重复读和虚读 (phantom read) 的常量。此级别允许由某一事务更改的行在已提交该行中的所有更改之前被另一个事务读取(“脏读”)。如果所有更改都被回滚,则第二个事务将检索无效的行。

另请参见:
常量字段值

TRANSACTION_READ_COMMITTED

static final int TRANSACTION_READ_COMMITTED
指示防止发生脏读的常量;不可重复读和虚读有可能发生。此级别只禁止事务读取其中带有未提交更改的行。

另请参见:
常量字段值

TRANSACTION_REPEATABLE_READ

static final int TRANSACTION_REPEATABLE_READ
指示防止发生脏读和不可重复读的常量;虚读有可能发生。此级别禁止事务读取其中带有未提交更改的行,它还禁止这种情况:一个事务读取某一行,而另一个事务更改该行,第一个事务重新读取该行,并在第二次读取时获得不同的值(“不可重复读”)。

另请参见:
常量字段值

TRANSACTION_SERIALIZABLE

static final int TRANSACTION_SERIALIZABLE
指示防止发生脏读、不可重复读和虚读的常量。此级别包括 TRANSACTION_REPEATABLE_READ 中禁止的事项并进一步禁止出现这种情况:某一事务读取所有满足 WHERE 条件的行,另一个事务插入一个满足 WHERE 条件的行,第一个事务重新读取满足相同条件的行,并在第二次读取时检索到额外的“虚”行。

另请参见:
常量字段值
方法详细信息

createStatement

Statement createStatement()
                          throws SQLException
创建一个 Statement 对象来将 SQL 语句发送到数据库。没有参数的 SQL 语句通常使用 Statement 对象执行。如果多次执行相同的 SQL 语句,使用 PreparedStatement 对象可能更有效。

使用返回的 Statement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

返回:
一个新的默认 Statement 对象
抛出:
SQLException - 如果发生数据库访问错误

prepareStatement

PreparedStatement prepareStatement(String sql)
                                   throws SQLException
创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。

带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编译并存储在 PreparedStatement 对象中。然后可以有效地使用此对象来多次执行该语句。

注:为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 对象的方法。

使用返回的 PreparedStatement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

参数:
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
返回:
包含预编译的 SQL 语句的新的默认 PreparedStatement 对象
抛出:
SQLException - 如果发生数据库访问错误

prepareCall

CallableStatement prepareCall(String sql)
                              throws SQLException
创建一个 CallableStatement 对象来调用数据库存储过程。CallableStatement 对象提供了设置其 IN 和 OUT 参数的方法,以及用来执行对存储过程的调用的方法。

注:为了处理存储过程调用语句,此方法进行了优化。某些驱动程序可以在调用 prepareCall 方法后将调用语句发送给数据库;另一些则直到执行了 CallableStatement 对象后才可以发送。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 的方法。

使用返回的 CallableStatement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

参数:
sql - 可能包含一个或多个 '?' 参数占位符的 SQL 语句。通常此语句是一个 JDBC 方法调用转义字符串。
返回:
包含预编译的 SQL 语句的新的默认 CallableStatement 对象
抛出:
SQLException - 如果发生数据库访问错误

nativeSQL

String nativeSQL(String sql)
                 throws SQLException
将给定的 SQL 语句转换成系统本机 SQL 语法。驱动程序可以在发送 JDBC SQL 语法之前将该语法转换成其系统本机 SQL 语法。此方法返回驱动程序将发送的语句的本机形式。

参数:
sql - 可以包含一个或多个 '?' 参数占位符的 SQL 语句
返回:
此语句的本机形式
抛出:
SQLException - 如果发生数据库访问错误

setAutoCommit

void setAutoCommit(boolean autoCommit)
                   throws SQLException
将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有 SQL 语句,并将这些语句作为单独的事务提交。否则,其 SQL 语句将成组地进入通过调用 commit 方法或 rollback 方法终止的事务中。默认情况下,新的连接处于自动提交模式下。

提交发生在语句完成或执行下一条语句时,以先发生的情况为准。在语句返回 ResultSet 对象的情况下,该语句在已检索完最后一行 ResultSet 对象或已关闭 ResultSet 对象时完成。在更复杂的情况下,单个语句可以返回多个结果和输出参数值。在这些情况下,提交发生在检索到所有结果和输出参数值后。

注:如果在事务处理期间调用此方法,则提交该事务。

参数:
autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用该模式
抛出:
SQLException - 如果发生数据库访问错误
另请参见:
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 方法是无操作 (no-op)。

注:Connection 对象在进行垃圾回收时被自动关闭。某些严重的错误也会关闭 Connection 对象。

抛出:
SQLException - 如果发生数据库访问错误

isClosed

boolean isClosed()
                 throws SQLException
检索此 Connection 对象是否已经被关闭。如果已经在连接上调用 close 方法或者发生某些严重的错误,则关闭 connection。此方法只保证在已经调用 Connection.close 方法之后被调用时返回 true

通常无法调用此方法来确定到数据库的连接是有效的还是无效的。通过捕获可能在试图进行某一操作时抛出的所有异常,典型的客户端可以确定某一连接是无效的。

返回:
如果此 Connection 对象是关闭的,则返回 true;如果它仍然处于打开状态,则返回 false
抛出:
SQLException - 如果发生数据库访问错误

getMetaData

DatabaseMetaData getMetaData()
                             throws SQLException
获取 DatabaseMetaData 对象,该对象包含关于 Connection 对象连接到的数据库的元数据。元数据包括关于数据库的表、受支持的 SQL 语法、存储过程、此连接的功能等信息。

返回:
Connection 对象的一个 DatabaseMetaData 对象
抛出:
SQLException - 如果发生数据库访问错误

setReadOnly

void setReadOnly(boolean readOnly)
                 throws SQLException
将此连接设置为只读模式,作为驱动程序启用数据库优化的提示。

注:此方法无法在事务处理期间调用。

参数:
readOnly - 为 true 表示启用只读模式;为 false 表示禁用该模式
抛出:
SQLException - 如果发生数据库访问错误或者在事务处理期间调用此方法

isReadOnly

boolean isReadOnly()
                   throws SQLException
检索此 Connection 对象是否处于只读模式。

返回:
如果此 Connection 对象是只读的,则返回 true;否则返回 false
抛出:
SQLException - 如果发生数据库访问错误

setCatalog

void setCatalog(String catalog)
                throws SQLException
设置给定目录名称,以便选择要在其中进行工作的此 Connection 对象数据库的子空间。

如果驱动程序不支持这些目录,那么它将安静地忽略此请求。

参数:
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_UNCOMMITTEDConnection.TRANSACTION_READ_COMMITTEDConnection.TRANSACTION_REPEATABLE_READConnection.TRANSACTION_SERIALIZABLE。(注意,不能使用 Connection.TRANSACTION_NONE,因为它指定了不受支持的事务。)
抛出:
SQLException - 如果发生数据库访问错误或者给定参数不是 Connection 常量之一
另请参见:
DatabaseMetaData.supportsTransactionIsolationLevel(int), getTransactionIsolation()

getTransactionIsolation

int getTransactionIsolation()
                            throws SQLException
检索此 Connection 对象的当前事务隔离级别。

返回:
当前事务隔离级别,它将是以下常量之一:Connection.TRANSACTION_READ_UNCOMMITTEDConnection.TRANSACTION_READ_COMMITTEDConnection.TRANSACTION_REPEATABLE_READConnection.TRANSACTION_SERIALIZABLEConnection.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 对象报告的所有警告。调用此方法后,在为此 Connection 对象报告新的警告之前,getWarnings 方法将返回 null

抛出:
SQLException - 如果发生数据库访问错误

createStatement

Statement createStatement(int resultSetType,
                          int resultSetConcurrency)
                          throws SQLException
创建一个 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。此方法与上述 createStatement 方法相同,但它允许重写默认结果集类型和并发性。

参数:
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一
resultSetConcurrency - 并发类型;它是 ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE 之一
返回:
一个新的 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型和并发性的 ResultSet 常量
从以下版本开始:
1.2

prepareStatement

PreparedStatement prepareStatement(String sql,
                                   int resultSetType,
                                   int resultSetConcurrency)
                                   throws SQLException
创建一个 PreparedStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。此方法与上述 prepareStatement 方法相同,但它允许重写默认结果集类型和并发性。

参数:
sql - 一个 String 对象,它是将被发送到数据库的 SQL 语句,可以包含一个或多个 ? IN 参数
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一
resultSetConcurrency - 并发类型,它是 ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE 之一
返回:
包含预编译的 SQL 语句的新 PreparedStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型和并发性的 ResultSet 常量
从以下版本开始:
1.2

prepareCall

CallableStatement prepareCall(String sql,
                              int resultSetType,
                              int resultSetConcurrency)
                              throws SQLException
创建一个 CallableStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。此方法与上述 prepareCall 方法相同,但它允许重写默认结果集类型和并发级别。

参数:
sql - 一个 String 对象,它是将被发送给数据库的 SQL 语句,可以包含一个或多个 ? 参数
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一
resultSetConcurrency - 并发类型,它是 ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE 之一
返回:
一个包含预编译的 SQL 语句的新 CallableStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型和并发性的 ResultSet 常量
从以下版本开始:
1.2

getTypeMap

Map<String,Class<?>> getTypeMap()
                                throws SQLException
将给定的 TypeMap 对象安装为此 Connection 对象的类型映射表。该映射表将用于 SQL 结构类型和不同类型的自定义映射。

参数:
map - 将作为此 Connection 对象默认类型映射表的替代安装的 java.util.Map 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是 java.util.Map 对象
从以下版本开始:
1.2
另请参见:
getTypeMap()

setTypeMap

void setTypeMap(Map<String,Class<?>> map)
                throws SQLException
安装给定的 TypeMap 对象作为此 Connection 对象的特定类型映射。除非应用程序已经添加了一个项,否则返回的类型映射表将为空。

抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.2
另请参见:
setTypeMap(java.util.Map>)

setHoldability

void setHoldability(int holdability)
                    throws SQLException
将使用此 Connection 对象创建的 ResultSet 对象的可保存性 (holdability) 更改为给定可保存性。

参数:
holdability - ResultSet 的可保存性常量,它是 ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT 之一
抛出:
SQLException - 如果发生数据库访问错误、给定参数不是指示可保存性的 ResultSet 常量,或者给定可保存性不受支持
从以下版本开始:
1.4
另请参见:
getHoldability(), ResultSet

getHoldability

int getHoldability()
                   throws SQLException
检索使用此 Connection 对象创建的 ResultSet 对象的当前可保存性。

返回:
可保存性,它是 ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT 之一
抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.4
另请参见:
setHoldability(int), ResultSet

setSavepoint

Savepoint setSavepoint()
                       throws SQLException
在当前事务中创建一个未命名的保存点 (savepoint),并返回表示它的新 Savepoint 对象。

返回:
新的 Savepoint 对象
抛出:
SQLException - 如果发生数据库访问错误,或者此 Connection 对象当前处于自动提交模式下
从以下版本开始:
1.4
另请参见:
Savepoint

setSavepoint

Savepoint setSavepoint(String name)
                       throws SQLException
在当前事务中创建一个具有给定名称的保存点,并返回表示它的新 Savepoint 对象。

参数:
name - 包含保存点的名称的 String
返回:
新的 Savepoint 对象
抛出:
SQLException - 如果发生数据库访问错误,或者此 Connection 对象当前处于自动提交模式下
从以下版本开始:
1.4
另请参见:
Savepoint

rollback

void rollback(Savepoint savepoint)
              throws SQLException
取消设置给定 Savepoint 对象之后进行的所有更改。

此方法应该只在已禁用自动提交时使用。

参数:
savepoint - 要回滚到的 Savepoint 对象
抛出:
SQLException - 如果发生数据库访问错误、Savepoint 对象不再有效,或者此 Connection 对象当前处于自动提交模式下
从以下版本开始:
1.4
另请参见:
Savepoint, rollback()

releaseSavepoint

void releaseSavepoint(Savepoint savepoint)
                      throws SQLException
从当前事务中移除给定 Savepoint 对象。在已移除保存点之后,对该保存点的任何引用都会导致抛出 SQLException

参数:
savepoint - 将移除的 Savepoint 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定 Savepoint 对象在当前事务中不是一个有效的保存点
从以下版本开始:
1.4

createStatement

Statement createStatement(int resultSetType,
                          int resultSetConcurrency,
                          int resultSetHoldability)
                          throws SQLException
创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象。此方法与上述 createStatement 方法相同,但它允许重写默认结果集类型、并发性和可保存性。

参数:
resultSetType - 以下 ResultSet 常量之一:ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency - 以下 ResultSet 常量之一:ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
resultSetHoldability - 以下 ResultSet 常量之一:ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT
返回:
一个新的 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指定类型、并发性和可保存性的 ResultSet 常量
从以下版本开始:
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_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency - 以下 ResultSet 常量之一:ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
resultSetHoldability - 以下 ResultSet 常量之一:ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT
返回:
一个包含预编译的 SQL 语句的新 PreparedStatement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型、并发性和可保存性的 ResultSet 常量
从以下版本开始:
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_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency - 以下 ResultSet 常量之一:ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
resultSetHoldability - 以下 ResultSet 常量之一:ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT
返回:
一个包含预编译的 SQL 语句的新 CallableStatement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示类型、并发性和可保存性的 ResultSet 常量
从以下版本开始:
1.4
另请参见:
ResultSet

prepareStatement

PreparedStatement prepareStatement(String sql,
                                   int autoGeneratedKeys)
                                   throws SQLException
创建一个默认 PreparedStatement 对象,该对象能检索自动生成的键。给定常量告知驱动程序是否应该使自动生成的键可用于检索。如果该 SQL 语句不是一条 INSERT 语句,则忽略此参数。

注:为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 的方法。

使用返回的 PreparedStatement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

参数:
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
autoGeneratedKeys - 指示是否应该返回自动生成的键的标志,它是 Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS 之一
返回:
一个包含预编译的 SQL 语句的新 PreparedStatement 对象,该对象能够返回自动生成的键
抛出:
SQLException - 如果发生数据库访问错误,或者给定参数不是指示是否应该返回自动生成的键的 Statement 常量
从以下版本开始:
1.4

prepareStatement

PreparedStatement prepareStatement(String sql,
                                   int[] columnIndexes)
                                   throws SQLException
创建一个能够返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。此数组包含目标表中的列的索引,而该目标表包含应该使其可用的自动生成的键。如果该 SQL 语句不是一条 INSERT 语句,则忽略此数组。

带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编辑并存储在 PreparedStatement 对象中。然后可以有效地使用此对象来多次执行该语句。

注:为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 的方法。

使用返回的 PreparedStatement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

参数:
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
columnIndexes - 指示应该从一个或多个插入行中返回的那些列的列索引组成的数组
返回:
一个包含预编译语句的新 PreparedStatement 对象,该对象能够返回由给定列索引数组指定的自动生成键
抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.4

prepareStatement

PreparedStatement prepareStatement(String sql,
                                   String[] columnNames)
                                   throws SQLException
创建一个能够返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。此数组包含目标表中的列的名称,而该目标表包含应该返回的自动生成键。如果该 SQL 语句不是一条 INSERT 语句,则忽略此数组。

带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编辑并存储在 PreparedStatement 对象中。然后可以有效地使用此对象来多次执行该语句。

注:为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;但它的确会影响抛出某些 SQLException 的方法。

使用返回的 PreparedStatement 对象创建的结果集在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。

参数:
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
columnNames - 指示应该从一个或多个插入行中返回的那些列的列名称组成的数组
返回:
一个包含预编译语句的新 PreparedStatement 对象,该对象能够返回由给定列名称数组指定的自动生成键
抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.4

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策