所有类


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 intTRANSACTION_NONE
          指示事务不受支持的常量。
static intTRANSACTION_READ_COMMITTED
          指示防止发生脏读的常量;不可重复读和虚读有可能发生。
static intTRANSACTION_READ_UNCOMMITTED
          指示可以发生脏读 (dirty read)、不可重复读和虚读 (phantom read) 的常量。
static intTRANSACTION_REPEATABLE_READ
          指示防止发生脏读和不可重复读的常量;虚读有可能发生。
static intTRANSACTION_SERIALIZABLE
          指示防止发生脏读、不可重复读和虚读的常量。
 
方法摘要
 voidclearWarnings()
          清除为此 Connection 对象报告的所有警告。
 voidclose()
          立即释放此 Connection 对象的数据库和 JDBC 资源,而不是等待它们被自动释放。
 voidcommit()
          使自从上一次提交/回滚以来进行的所有更改成为持久更改,并释放此 Connection 对象当前保存的所有数据库锁定。
 StatementcreateStatement()
          创建一个 Statement 对象来将 SQL 语句发送到数据库。
 StatementcreateStatement(int resultSetType, int resultSetConcurrency)
          创建一个 Statement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。
 StatementcreateStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
          创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象。
 booleangetAutoCommit()
          检索此 Connection 对象的当前自动提交模式。
 StringgetCatalog()
          检索此 Connection 对象的当前目录名称。
 intgetHoldability()
          检索使用此 Connection 对象创建的 ResultSet 对象的当前可保存性。
 DatabaseMetaDatagetMetaData()
          获取 DatabaseMetaData 对象,该对象包含关于 Connection 对象连接到的数据库的元数据。
 intgetTransactionIsolation()
          检索此 Connection 对象的当前事务隔离级别。
 Map<String,Class<?>>getTypeMap()
          将给定的 TypeMap 对象安装为此 Connection 对象的类型映射表。
 SQLWarninggetWarnings()
          检索此 Connection 对象上的调用报告的第一个警告。
 booleanisClosed()
          检索此 Connection 对象是否已经被关闭。
 booleanisReadOnly()
          检索此 Connection 对象是否处于只读模式。
 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 对象。
 voidrollback()
          取消在当前事务中进行的所有更改,并释放此 Connection 对象当前保存的所有数据库锁定。
 voidrollback(Savepoint savepoint)
          取消设置给定 Savepoint 对象之后进行的所有更改。
 voidsetAutoCommit(boolean autoCommit)
          将此连接的自动提交模式设置为给定状态。
 voidsetCatalog(String catalog)
          设置给定目录名称,以便选择要在其中进行工作的此 Connection 对象数据库的子空间。
 voidsetHoldability(int holdability)
          将使用此 Connection 对象创建的 ResultSet 对象的可保存性 (holdability) 更改为给定可保存性。
 voidsetReadOnly(boolean readOnly)
          将此连接设置为只读模式,作为驱动程序启用数据库优化的提示。
 SavepointsetSavepoint()
          在当前事务中创建一个未命名的保存点 (savepoint),并返回表示它的新 Savepoint 对象。
 SavepointsetSavepoint(String name)
          在当前事务中创建一个具有给定名称的保存点,并返回表示它的新 Savepoint 对象。
 voidsetTransactionIsolation(int level)
          试图将此 Connection 对象的事务隔离级别更改为给定的级别。
 voidsetTypeMap(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 - 如果发生数据库访问错误