模块  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 
      变量和类型 方法 描述
      void abort​(Executor executor)
      终止打开的连接。
      default void beginRequest()
      向驾驶员提示一个请求,一个独立的工作单元,正在这个连接上开始。
      void clearWarnings()
      清除为此 Connection对象报告的所有警告。
      void close()
      立即释放此 Connection对象的数据库和JDBC资源,而不是等待它们自动释放。
      void commit()
      使自上次提交/回滚以来所做的所有更改成为永久更改,并释放此 Connection对象当前持有的所有数据库锁。
      Array createArrayOf​(String typeName, Object[] elements)
      用于创建Array对象的工厂方法。
      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对象的当前可保存性。
      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​(String name, String value)
      将name指定的客户端信息属性的值设置为value指定的值。
      void setClientInfo​(Properties properties)
      设置连接的客户端信息属性的值。
      void setHoldability​(int holdability)
      将使用此 Connection对象创建的 ResultSet对象的默认可 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)
      指定要与此Connection一起使用的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,​<?>> map)
      安装给定的 TypeMap对象的类型映射此 Connection对象。
    • 字段详细信息

      • TRANSACTION_NONE

        static final int TRANSACTION_NONE
        一个常量,指示不支持事务。
        另请参见:
        常数字段值
      • TRANSACTION_READ_UNCOMMITTED

        static final int TRANSACTION_READ_UNCOMMITTED
        一个常量,表示可以发生脏读,不可重复读和幻像读。 此级别允许在提交该行中的任何更改(“脏读”)之前,由另一个事务读取由一个事务更改的行。 如果回滚任何更改,则第二个事务将检索到无效行。
        另请参见:
        常数字段值
      • 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 可以通过调用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参数占位符
        结果
        包含预编译SQL语句的新默认值 PreparedStatement
        异常
        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调用转义语法指定的。
        结果
        包含预编译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终止的事务。 默认情况下,新连接处于自动提交模式。

        语句完成时发生提交。 语句完成的时间取决于SQL语句的类型:

        • 对于DML语句,例如Insert,Update或Delete,以及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
        结果
        包含预编译SQL语句的新PreparedStatement对象,该语句将生成具有给定类型和并发性的 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
        结果
        一个新的 CallableStatement对象,包含预编译的SQL语句,该语句将生成具有给定类型和并发性的 ResultSet对象
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的连接上调用此方法,或者给定的参数不是指示类型和并发的 ResultSet常量
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,或者指定的结果集类型和结果集并发不支持此方法。
        从以下版本开始:
        1.2
      • getTypeMap

        Map<String,​<?>> 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,​<?>> 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驱动程序不支持此方法
        从以下版本开始:
        1.2
        另请参见:
        getTypeMap()
      • 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常量,表示类型,并发性和可保持性
        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常量
        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接口的对象,则在关闭的连接上调用此方法或发生数据库访问错误。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此数据类型
        从以下版本开始:
        1.6
      • createBlob

        Blob createBlob()
                 throws SQLException
        构造一个实现Blob接口的对象。 最初返回的对象不包含任何数据。 Blob接口的setBinaryStreamsetBytes方法可用于将数据添加到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指定的客户端信息属性的值设置为value指定的值。

        应用程序可以使用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对象的工厂方法。

        注意:当使用createArrayOf创建映射到基本数据类型的数组对象时,无论Array对象是该基本数据类型的数组还是Object的数组,它都是实现定义的。

        注意: JDBC驱动程序负责将元素Object数组映射到java.sql.Types中为给定类Object定义的缺省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 - 填充返回对象的属性
        结果
        一个Struct对象,它映射到给定的SQL类型并使用给定的属性填充
        异常
        SQLException - 如果发生数据库错误,则typeName为null,或者在已关闭的连接上调用此方法
        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将被标记为已关闭。 任何后续使用的对象,随着外closeisClosedConnection.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对不会依赖于连接上进行任何其他工作,如任何要求的其他请求或外部的一部分。 请求可以包括多个事务。 可能存在对已提交数据库状态的依赖性,因为它不是连接的本地状态。

        本地状态定义为与客户端或数据库中当前连接本地的Connection相关联的任何状态,该连接不是透明可再现的。

        调用beginRequestendRequest不是嵌套的。 多次拨打beginRequest中间没有调用endRequest不是一个错误。 第一个beginRequest呼叫标记请求的开始,后续呼叫被视为无操作

        使用beginRequestendRequest是可选的,特定于供应商,并且应该在很大程度上是透明的。 在特定实现中,可以检测指示依赖于其他工作的条件,例如开放事务。 建议虽然不要求实现抛出SQLException ,如果有一个活动的事务,并beginRequest被调用。 使用这些方法可以改善性能或提供其他好处。 有关其他信息,请参阅供应商文档。

        建议的每个工作单元括在beginRequestendRequest对这样的存在在开始或请求的端部和局部状态跨越请求边界没有依赖性没有打开的事务。 提交的数据库状态不是本地的。

        API Note:
        连接池管理器将使用此方法。

        在将连接返回给调用者之前,池管理器应在底层连接上调用beginRequest

        如果beginRequest条件,汇集经理无需致电beginRequest

        • 连接池缓存PooledConnection对象
        • 当应用程序调用getConnection时,返回逻辑连接句柄
        • 逻辑Connection通过调用关闭Connection.close之前返回PooledConnection到缓存。
        实现要求:
        默认实现是无操作。
        异常
        SQLException - 如果发生错误
        从以下版本开始:
        9
        另请参见:
        endRequest()PooledConnection
      • endRequest

        default void endRequest()
                         throws SQLException
        向驾驶员提示已完成请求(独立工作单元)。 调用beginRequestendRequest未嵌套。 多次拨打endRequest中间没有调用beginRequest不是一个错误。 第一个endRequest呼叫标记请求已完成,后续呼叫被视为无操作。 如果endRequest是没有初始呼叫叫beginRequest是一个空操作。

        此方法的确切行为是特定于供应商的。 在特定实现中,可以检测指示依赖于其他工作的条件,例如开放事务。 如果存在活动事务并且endRequest ,则建议不要求实现抛出SQLException

        API Note:
        连接池管理器将使用此方法。

        当应用程序将连接返回到连接池时,池管理器应在底层连接上调用endRequest

        如果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有效。 超时值指示驱动程序在setShardingKeyIfValid返回false之前应等待Connection验证分片键是否有效的时间。
        实现要求:
        默认实现将抛出 SQLFeatureNotSupportedException
        参数
        shardingKey - 要对此连接进行验证的分片键。 分片键可以是null
        superShardingKey - 要针对此连接进行验证的超级分片键。 超级分片键可以是null
        timeout - 预计验证过程完成之前的时间(以秒为单位),否则验证过程将中止。 值为0表示验证过程不会超时。
        结果
        如果连接有效且分片键有效并在此连接上设置,则为true;否则为false。 如果分片键无效或超时时间在操作完成之前到期,则返回false。
        异常
        SQLException - 如果执行此验证时发生错误; a superSharedingKey未指定shardingKey ; 这个方法在关闭的connectionconnection ; 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。 如果分片键无效或超时时间在操作完成之前到期,则返回false。
        异常
        SQLException - 如果执行此验证时出错; 这个方法在关闭的connectionconnection ; 或者timeout值为负数。
        SQLFeatureNotSupportedException - 如果驱动程序不支持分片
        从以下版本开始:
        9
        另请参见:
        ShardingKeyShardingKeyBuilder
      • setShardingKey

        default void setShardingKey​(ShardingKey shardingKey,
                                    ShardingKey superShardingKey)
                             throws SQLException
        指定要与此Connection一起使用的shardingKey和superShardingKey
        API Note:
        此方法设置指定的分片键,但不需要往返数据库以验证分片键对 Connection有效。
        实现要求:
        默认实现将抛出 SQLFeatureNotSupportedException
        参数
        shardingKey - 要在此连接上设置的分片键。 分片键可以是null
        superShardingKey - 要在此连接上设置的超级分片键。 超级分片键可以是null
        异常
        SQLException - 如果设置了分片键时发生错误; 这个方法在关闭的connectionconnection ; 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