Module  java.sql
软件包  java.sql

Interface Connection

  • All Superinterfaces:
    AutoCloseableWrapper


    public interface Connection
    extends Wrapper, AutoCloseable

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

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

    注意:配置Connection ,JDBC应用程序应使用适当的Connection方法,如setAutoCommitsetTransactionIsolation 当有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)StatementResultSetDatabaseMetaData
    • 方法摘要

      所有方法  接口方法  抽象方法  Default Methods 
      Modifier and Type 方法 描述
      void abort​(Executor executor)
      终止打开的连接。
      default void beginRequest​()
      向司机提示,一个请求,一个独立的工作单位,正在开始这个连接。
      void clearWarnings​()
      清除此 Connection对象报告的所有警告。
      void close​()
      立即释放此 Connection对象的数据库和JDBC资源,而不是等待它们自动释放。
      void commit​()
      使上次提交/回滚之后所做的所有更改都将永久性,并释放此 Connection对象当前持有的任何数据库锁。
      Array createArrayOf​(String typeName, Object[] elements)
      用于创建Array对象的Factory方法。
      Blob createBlob​()
      构造一个实现 Blob接口的对象。
      Clob createClob​()
      构造一个实现 Clob接口的对象。
      NClob createNClob​()
      构造一个实现 NClob接口的对象。
      SQLXML createSQLXML​()
      构造一个实现 SQLXML接口的对象。
      Statement createStatement​()
      创建一个 Statement对象,用于将SQL语句发送到数据库。
      Statement createStatement​(int resultSetType, int resultSetConcurrency)
      创建一个 Statement对象,该对象将生成具有给定类型和并发性的 ResultSet对象。
      Statement createStatement​(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
      创建一个 Statement对象,该对象将生成具有给定类型,并发和 ResultSet对象。
      Struct createStruct​(String typeName, Object[] attributes)
      用于创建Struct对象的工厂方法。
      default void endRequest​()
      向司机提示,要求,独立工作单位已经完成。
      boolean getAutoCommit​()
      检索此 Connection对象的当前自动提交模式。
      String getCatalog​()
      检索此 Connection对象的当前目录名称。
      Properties getClientInfo​()
      返回包含驱动程序支持的每个客户端信息属性的名称和当前值的列表。
      String getClientInfo​(String name)
      返回由name指定的客户端信息属性的值。
      int getHoldability​()
      检索使用此 Connection对象创建的 ResultSet对象的当前可 Connection
      DatabaseMetaData getMetaData​()
      检索一个 DatabaseMetaData对象,其中包含有关此 Connection对象表示连接的数据库的元数据。
      int getNetworkTimeout​()
      检索驱动程序等待数据库请求完成的毫秒数。
      String getSchema​()
      检索此 Connection对象的当前模式名称。
      int getTransactionIsolation​()
      检索此 Connection对象的当前事务隔离级别。
      Map<String,Class<?>> getTypeMap​()
      检索与该 Map对象关联的 Connection对象。
      SQLWarning getWarnings​()
      检索此 Connection对象上的通话报告的第一个警告。
      boolean isClosed​()
      检索此 Connection对象是否已关闭。
      boolean isReadOnly​()
      检索此 Connection对象是否处于只读模式。
      boolean isValid​(int timeout)
      如果连接尚未关闭并且仍然有效,则返回true。
      String nativeSQL​(String sql)
      将给定的SQL语句转换为系统的本机SQL语法。
      CallableStatement prepareCall​(String sql)
      创建一个 CallableStatement对象来调用数据库存储过程。
      CallableStatement prepareCall​(String sql, int resultSetType, int resultSetConcurrency)
      创建一个 CallableStatement对象,该对象将生成具有给定类型和并发性的 ResultSet对象。
      CallableStatement prepareCall​(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
      创建一个 CallableStatement对象,它将生成具有给定类型和并发性的 ResultSet对象。
      PreparedStatement prepareStatement​(String sql)
      创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
      PreparedStatement prepareStatement​(String sql, int autoGeneratedKeys)
      创建一个默认的 PreparedStatement对象,该对象具有检索自动生成的密钥的能力。
      PreparedStatement prepareStatement​(String sql, int[] columnIndexes)
      创建一个默认的 PreparedStatement对象,能够返回由给定数组指定的自动生成的键。
      PreparedStatement prepareStatement​(String sql, int resultSetType, int resultSetConcurrency)
      创建一个 PreparedStatement对象,该对象将使用给定类型和并发性生成 ResultSet对象。
      PreparedStatement prepareStatement​(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
      创建一个 PreparedStatement对象,该对象将生成具有给定类型,并发和 ResultSet对象。
      PreparedStatement prepareStatement​(String sql, String[] columnNames)
      创建一个默认的 PreparedStatement对象,能够返回给定数组指定的自动生成的键。
      void releaseSavepoint​(Savepoint savepoint)
      从当前事务中删除指定的 Savepoint和后续的 Savepoint对象。
      void rollback​()
      撤消在当前事务中所做的所有更改,并释放此 Connection对象当前持有的任何数据库锁。
      void rollback​(Savepoint savepoint)
      撤消在给定的 Savepoint对象设置后进行的所有更改。
      void setAutoCommit​(boolean autoCommit)
      将此连接的自动提交模式设置为给定状态。
      void setCatalog​(String catalog)
      设置给定的目录名称,以便选择要在其中工作的 Connection对象的数据库的子空间。
      void setClientInfo​(String name, String value)
      将由name指定的客户端信息属性的值设置为由值指定的值。
      void setClientInfo​(Properties properties)
      设置连接的客户端信息属性的值。
      void setHoldability​(int holdability)
      将使用此 Connection对象创建的对象的默认 ResultSet更改为给定的可保存性。
      void setNetworkTimeout​(Executor executor, int milliseconds)
      设置 Connection的最大周期或从 Connection创建的 Connection将等待数据库回复任何一个请求。
      void setReadOnly​(boolean readOnly)
      将此连接设置为只读模式,作为驱动程序的提示以启用数据库优化。
      Savepoint setSavepoint​()
      在当前事务中创建一个未命名的保存点,并返回表示它的新的 Savepoint对象。
      Savepoint setSavepoint​(String name)
      在当前事务中创建具有给定名称的保存点,并返回表示它的新的 Savepoint对象。
      void setSchema​(String schema)
      设置要访问的给定模式名称。
      default void setShardingKey​(ShardingKey shardingKey)
      指定与此Connection一起使用的shardingKey
      default void setShardingKey​(ShardingKey shardingKey, ShardingKey superShardingKey)
      指定与此连接一起使用的shardingKey和superShardingKey
      default boolean setShardingKeyIfValid​(ShardingKey shardingKey, int timeout)
      设置并验证此连接的分片密钥。
      default boolean setShardingKeyIfValid​(ShardingKey shardingKey, ShardingKey superShardingKey, int timeout)
      设置并验证此连接的分片密钥。
      void setTransactionIsolation​(int level)
      尝试将此 Connection对象的事务隔离级别更改为给定的对象。
      void setTypeMap​(Map<String,Class<?>> map)
      安装给定 TypeMap对象的类型映射此 Connection对象。
    • 字段详细信息

      • 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方法prepareStatementprepareCall被调用时,是否定义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_UNCOMMITTEDConnection.TRANSACTION_READ_COMMITTEDConnection.TRANSACTION_REPEATABLE_READ ,或Connection.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_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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或ResultSet.TYPE_SCROLL_SENSITIVE
        resultSetConcurrency - 并发类型; 一个ResultSet.CONCUR_READ_ONLYResultSet.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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或ResultSet.TYPE_SCROLL_SENSITIVE
        resultSetConcurrency - 并发类型; ResultSet.CONCUR_READ_ONLYResultSet.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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或ResultSet.TYPE_SCROLL_SENSITIVE
        resultSetConcurrency - 并发类型; ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
        结果
        包含预编译的SQL语句的新的 CallableStatement对象将产生具有给定类型和并发的 ResultSet对象
        异常
        SQLException - 如果发生数据库访问错误,则在闭合连接上调用此方法,或者给定参数不是表示类型和并发的常量 ResultSet
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,或者该方法不支持指定的结果集类型和结果集并发。
        从以下版本开始:
        1.2
      • getTypeMap

        Map<String,Class<?>> getTypeMap​()
                                 throws SQLException
        检索Map与此相关联的对象Connection对象。 除非应用程序已添加条目,否则返回的类型映射将为空。

        在对从getTypeMap返回的Map对象进行更改后,您必须调用setTypeMap ,因为JDBC驱动程序可能会创建传递给setTypeMapMap对象的内部副本:

          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()
      • getHoldability

        int getHoldability​()
                    throws SQLException
        检索使用此 Connection对象创建的 ResultSet对象的当前可 Connection
        结果
        ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.HOLD_CURSORS_OVER_COMMITResultSet.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
        另请参见:
        Savepointrollback()
      • 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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或 ResultSet.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常量 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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或 ResultSet.TYPE_SCROLL_SENSITIVE
        resultSetConcurrency - 以下 ResultSet常量之一: ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
        resultSetHoldability - 以下 ResultSet常量之一: ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.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_ONLYResultSet.TYPE_SCROLL_INSENSITIVE ,或 ResultSet.TYPE_SCROLL_SENSITIVE
        resultSetConcurrency - 以下 ResultSet常数之一: ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
        resultSetHoldability - 以下 ResultSet常数之一: ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.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_KEYSStatement.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接口的对象。 最初返回的对象不包含任何数据。 setAsciiStreamsetCharacterStreamsetString所述的方法Clob接口可用于将数据添加到所述Clob
        结果
        一个实现 Clob接口的对象
        异常
        SQLException - 如果无法构建实现 Clob接口的对象, Clob在闭合连接上调用此方法或发生数据库访问错误。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • createBlob

        Blob createBlob​()
                 throws SQLException
        构造实现Blob接口的对象。 最初返回的对象不包含任何数据。 setBinaryStreamsetBytes方法的Blob接口可用于向Blob添加数据。
        结果
        一个实现 Blob接口的对象
        异常
        SQLException - 如果无法构建实现 Blob接口的对象,则在闭合连接上调用此方法或发生数据库访问错误。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • createNClob

        NClob createNClob​()
                   throws SQLException
        构造实现NClob接口的对象。 最初返回的对象不包含任何数据。 setAsciiStreamsetCharacterStreamsetString所述的方法NClob接口可用于将数据添加到所述NClob
        结果
        一个实现 NClob接口的对象
        异常
        SQLException - 如果无法构建实现 NClob接口的对象,则在闭合连接上调用此方法或发生数据库访问错误。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • createSQLXML

        SQLXML createSQLXML​()
                     throws SQLException
        构造实现SQLXML接口的对象。 最初返回的对象不包含任何数据。 createXmlStreamWriter对象和setString所述的方法SQLXML接口可用于将数据添加到所述SQLXML对象。
        结果
        一个实现 SQLXML接口的对象
        异常
        SQLException - 如果无法构建实现 SQLXML接口的对象,则在闭合连接上调用此方法或发生数据库访问错误。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • isValid

        boolean isValid​(int timeout)
                 throws SQLException
        如果连接尚未关闭并且仍然有效,则返回true。 驱动程序应该提交关于连接的查询或者使用一些其他机制,当调用此方法时,肯定验证连接仍然有效。

        驱动程序提交的验证连接的查询应在当前事务的上下文中执行。

        参数
        timeout - - 等待数据库操作用于验证连接完成的时间(秒)。 如果超时时间在操作完成之前到期,则此方法返回false。 值为0表示超时未应用于数据库操作。
        结果
        如果连接有效,则为true,否则为false
        异常
        SQLException - 如果为 timeout提供的值小于0
        从以下版本开始:
        1.6
        另请参见:
        DatabaseMetaData.getClientInfoProperties()
      • setClientInfo

        void setClientInfo​(String name,
                           String value)
                    throws SQLClientInfoException
        将由name指定的客户端信息属性的值设置为由值指定的值。

        应用程序可以使用DatabaseMetaData.getClientInfoProperties方法来确定驱动程序支持的客户端信息属性以及可能为每个属性指定的最大长度。

        驱动程序将指定的值存储在数据库中的合适位置。 例如在特殊寄存器,会话参数或系统表列中。 为了提高效率,驱动程序可能推迟在数据库中设置值,直到下一次执行或准备语句。 除了将客户端信息存储在数据库中的适当位置之外,这些方法不得改变连接的行为。 提供给这些方法的值仅用于记帐,诊断和调试目的。

        如果指定的客户端信息名称不被驱动程序识别,驱动程序将产生警告。

        如果为此方法指定的值大于该属性的最大长度,则驱动程序可能会截断该值并生成警告或生成一个SQLClientInfoException 如果驱动程序生成SQLClientInfoException ,则指定的值未在连接上设置。

        以下是标准的客户端信息属性。 驱动程序不需要支持这些属性,但是如果驱动程序支持可以由其中一个标准属性描述的客户端信息属性,则应使用标准属性名称。

        • ApplicationName - 当前正在使用连接的应用程序的名称
        • ClientUser - 使用连接的应用程序正在执行的用户的名称。 这可能与建立连接时使用的用户名不同。
        • ClientHostname - 使用连接的应用程序正在运行的计算机的主机名。
        参数
        name - 要设置的客户端信息属性的名称
        value - 将客户端信息属性设置为的值。 如果值为null,则指定属性的当前值将被清除。
        异常
        SQLClientInfoException - 如果数据库服务器在设置数据库服务器上的客户端信息值时返回错误,或者在闭合连接上调用此方法
        从以下版本开始:
        1.6
      • setClientInfo

        void setClientInfo​(Properties properties)
                    throws SQLClientInfoException
        设置连接的客户端信息属性的值。 Properties对象包含要设置的客户端信息属性的名称和值。 属性列表中包含的客户端信息属性集将替换当前连接上的客户端信息属性集。 如果连接上当前设置的属性不存在于属性列表中,则该属性将被清除。 指定空属性列表将清除连接上的所有属性。 有关详细信息,请参阅setClientInfo (String, String)

        如果在设置任何客户端信息属性时发生错误,则抛出SQLClientInfoException SQLClientInfoException包含指示哪些客户端信息属性未设置的信息。 客户端信息的状态是未知的,因为某些数据库不允许以原子方式设置多个客户端信息属性。 对于这些数据库,可能在错误发生之前设置了一个或多个属性。

        参数
        properties - 要设置的客户端信息属性的列表
        异常
        SQLClientInfoException - 如果数据库服务器在数据库服务器上设置clientInfo值时返回错误,或者在闭合连接上调用此方法
        从以下版本开始:
        1.6
        另请参见:
        setClientInfo(String, String)
      • getClientInfo

        String getClientInfo​(String name)
                      throws SQLException
        返回由name指定的客户端信息属性的值。 如果指定的客户端信息属性尚未设置且没有默认值,则此方法可能返回null。 如果驱动程序不支持指定的客户端信息属性名称,此方法也将返回null。

        应用程序可以使用DatabaseMetaData.getClientInfoProperties方法来确定驱动程序支持的客户端信息属性。

        参数
        name - 要检索的客户端信息属性的名称
        结果
        指定的客户端信息属性的值
        异常
        SQLException - 如果数据库服务器在从数据库获取客户机信息值时返回错误,或者在闭合连接上调用此方法
        从以下版本开始:
        1.6
        另请参见:
        DatabaseMetaData.getClientInfoProperties()
      • getClientInfo

        Properties getClientInfo​()
                          throws SQLException
        返回包含驱动程序支持的每个客户端信息属性的名称和当前值的列表。 如果属性未设置且没有默认值,则客户端信息属性的值可能为null。
        结果
        一个 Properties对象,其中包含驱动程序支持的每个客户端信息属性的名称和当前值。
        异常
        SQLException - 如果数据库服务器在从数据库中获取客户端信息值时返回错误,或者在闭合连接上调用此方法
        从以下版本开始:
        1.6
      • createArrayOf

        Array createArrayOf​(String typeName,
                            Object[] elements)
                     throws SQLException
        用于创建Array对象的Factory方法。

        注意:当使用createArrayOf创建映射到原始数据类型的数组对象时,实现定义Array对象是否是该基元数据类型的数组或Object的数组。

        注意: JDBC驱动程序负责将元素Object数组映射到给定类别为Object java.sql.Types中定义的默认JDBC SQL类型。 默认映射在JDBC规范的附录B中指定。 如果生成的JDBC类型不是给定typeName的适当类型,那么它将被实现定义是抛出一个SQLException还是驱动程序支持所得到的转换。

        参数
        typeName - 数组的元素的类型的SQL名称映射到。 typeName是一个特定于数据库的名称,可能是该数据库支持的内置类型,用户定义类型或标准SQL类型的名称。 这是Array.getBaseTypeName返回的值
        elements - 填充返回对象的元素
        结果
        一个Array对象,其元素映射到指定的SQL类型
        异常
        SQLException - 如果发生数据库错误,则JDBC类型不适用于typeName,并且不支持转换,typeName为null或在闭合连接上调用此方法
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • createStruct

        Struct createStruct​(String typeName,
                            Object[] attributes)
                     throws SQLException
        用于创建Struct对象的工厂方法。
        参数
        typeName - 此Struct对象映射到的SQL结构化类型的SQL类型名称。 typeName是为此数据库定义的用户定义类型的名称。 这是Struct.getSQLTypeName返回的值。
        attributes - 填充返回对象的属性
        结果
        一个映射到给定SQL类型并使用给定属性填充的Struct对象
        异常
        SQLException - 如果发生数据库错误,typeName为空,或者在闭合连接上调用此方法
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • setSchema

        void setSchema​(String schema)
                throws SQLException
        设置要访问的给定模式名称。

        如果驱动程序不支持模式,它将默认忽略此请求。

        调用setSchema对以前创建或准备的Statement对象没有影响。 Connection方法prepareStatementprepareCall被调用时,定义是否立即执行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 - 如果发生数据库访问错误或 executornull
        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将被标记为关闭。 任何后续使用的对象,随着外closeisClosed或者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 - 如果发生数据库访问错误,则在闭合连接上调用此方法, executornull ,或为 seconds指定的值小于0。
        SecurityException - 如果存在安全管理员,并且其 checkPermission方法拒绝调用 setNetworkTimeout
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        从以下版本开始:
        1.7
        另请参见:
        SecurityManager.checkPermission(java.security.Permission)Statement.setQueryTimeout(int)getNetworkTimeout()abort(java.util.concurrent.Executor)Executor
      • beginRequest

        default void beginRequest​()
                           throws SQLException
        向司机提示,一个请求,一个独立的工作单位,正在开始这个连接。 每个请求与客户端或服务器上连接的本地状态相关的所有其他请求都是独立的。 工作之间做beginRequestendRequest对不会依赖于连接上进行任何其他工作,如任何要求的其他请求或外部的一部分。 请求可以包括多个事务。 可能依赖于已提交的数据库状态,因为它不是本地连接。

        本地状态被定义为与客户端或数据库中不可透明再现的当前连接本地连接的任何状态。

        致电beginRequestendRequest未嵌套。 beginRequest多次呼叫,无endRequest呼叫endRequest不是错误。 第一个beginRequest调用标记为请求的开始,后续调用被视为无操作

        使用beginRequestendRequest是可选的,供应商特定的,并且应该在很大程度上是透明的。 特别地,实现可以检测指示对诸如开放事务之类的其他工作的依赖的条件。 建议尽管不需要,如果有一个活动的事务和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
        向司机提示,要求,独立工作单位已经完成。 拨打beginRequestendRequest都不嵌套。 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 超时值指示ConnectionsetShardingKeyIfValid返回false之前等待Connection验证分片密钥有效的时间。
        实现要求:
        默认实现将抛出一个 SQLFeatureNotSupportedException
        参数
        shardingKey - 要对此连接进行验证的分片密钥。 分片键可能是null
        superShardingKey - 要对此连接进行验证的超级分片密钥。 超级分片键可以是null
        timeout - 预计在完成验证过程之前的几秒钟内的时间,否则验证过程将中止。 值为0表示验证过程不会超时。
        结果
        如果连接有效并且分片键在此连接上有效并设置,则为true; 如果分片键无效或超时期限在操作完成之前到期,则为false。
        异常
        SQLException - 执行此验证时是否发生错误; 一个superSharedingKey指定没有一个shardingKey ; 这个方法叫做一个封闭的connection ; timeout值为负数。
        SQLFeatureNotSupportedException - 如果驱动程序不支持分片
        从以下版本开始:
        9
        另请参见:
        ShardingKeyShardingKeyBuilder
      • 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
        另请参见:
        ShardingKeyShardingKeyBuilder
      • 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
        另请参见:
        ShardingKeyShardingKeyBuilder
      • setShardingKey

        default void setShardingKey​(ShardingKey shardingKey)
                             throws SQLException
        指定与此Connection一起使用的shardingKey
        API Note:
        此方法设置指定的分片密钥,但不需要往返数据库,以验证分片密钥对 Connection有效。
        实现要求:
        默认实现将抛出一个 SQLFeatureNotSupportedException
        参数
        shardingKey - 在此连接上设置的分片密钥。 分片键可以是null
        异常
        SQLException - 如果发生错误设置分片键; 或者这个方法在关闭的connection
        SQLFeatureNotSupportedException - 如果驱动程序不支持分片
        从以下版本开始:
        9
        另请参见:
        ShardingKey, ShardingKeyBuilder