模块  java.sql
软件包  java.sql

Interface Statement

  • All Superinterfaces:
    AutoCloseable , Wrapper
    All Known Subinterfaces:
    CallableStatement , PreparedStatement

    public interface Statement
    extends Wrapper, AutoCloseable

    用于执行静态SQL语句并返回其生成的结果的对象。

    默认情况下,每个Statement对象只能同时打开一个ResultSet对象。 因此,如果读取一个ResultSet对象与另一个对象的读取交错,则每个对象必须由不同的Statement对象生成。 如果存在打开的语句,则Statement接口中的所有执行方法Statement隐式关闭语句的当前ResultSet对象。

    从以下版本开始:
    1.1
    另请参见:
    Connection.createStatement() , ResultSet
    • 字段汇总

      字段  
      变量和类型 字段 描述
      static int CLOSE_ALL_RESULTS
      该常量指示在调用 getMoreResults时应关闭先前保持打开的所有 ResultSet对象。
      static int CLOSE_CURRENT_RESULT
      该常量指示在调用 getMoreResults时应关闭当前的 ResultSet对象。
      static int EXECUTE_FAILED
      该常量指示执行批处理语句时发生错误。
      static int KEEP_CURRENT_RESULT
      该常量指示在调用 getMoreResults时不应关闭当前的 ResultSet对象。
      static int NO_GENERATED_KEYS
      该常量指示不应使生成的键可用于检索。
      static int RETURN_GENERATED_KEYS
      常量表示生成的键应该可用于检索。
      static int SUCCESS_NO_INFO
      该常量指示批处理语句已成功执行但不影响其受影响的行数。
    • 方法摘要

      所有方法  实例方法 抽象方法  Default Methods 
      变量和类型 方法 描述
      void addBatch​(String sql)
      将给定的SQL命令添加到此 Statement对象的当前命令列表中。
      void cancel()
      如果DBMS和驱动程序都支持中止SQL语句,则取消此 Statement对象。
      void clearBatch()
      清空此 Statement对象的当前SQL命令列表。
      void clearWarnings()
      清除此 Statement对象上报告的所有警告。
      void close()
      立即释放此 Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。
      void closeOnCompletion()
      指定在关闭所有相关结果集时将关闭此 Statement 。
      default String enquoteIdentifier​(String identifier, boolean alwaysQuote)
      返回SQL标识符。
      default String enquoteLiteral​(String val)
      返回用单引号括起来的 String 。
      default String enquoteNCharLiteral​(String val)
      返回 String表示用单引号括起来的国家字符集文字,并以大写字母N为前缀。
      boolean execute​(String sql)
      执行给定的SQL语句,该语句可能返回多个结果。
      boolean execute​(String sql, int autoGeneratedKeys)
      执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,告知任何自动生成的键应该可用于检索。
      boolean execute​(String sql, int[] columnIndexes)
      执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      boolean execute​(String sql, String[] columnNames)
      执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      int[] executeBatch()
      将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。
      default long[] executeLargeBatch()
      将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。
      default long executeLargeUpdate​(String sql)
      执行给定的SQL语句,这可能是 INSERT , UPDATE ,或 DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。
      default long executeLargeUpdate​(String sql, int autoGeneratedKeys)
      执行给定的SQL语句,并通过给定标志向驱动程序发出信号,告知该 Statement对象生成的自动生成的密钥是否可用于检索。
      default long executeLargeUpdate​(String sql, int[] columnIndexes)
      执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      default long executeLargeUpdate​(String sql, String[] columnNames)
      执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      ResultSet executeQuery​(String sql)
      执行给定的SQL语句,该语句返回单个 ResultSet对象。
      int executeUpdate​(String sql)
      执行给定的SQL语句,这可能是 INSERT , UPDATE ,或 DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。
      int executeUpdate​(String sql, int autoGeneratedKeys)
      执行给定的SQL语句,并使用给定标志向驱动程序发出信号,告知该 Statement对象生成的自动生成的密钥是否可用于检索。
      int executeUpdate​(String sql, int[] columnIndexes)
      执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      int executeUpdate​(String sql, String[] columnNames)
      执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。
      Connection getConnection()
      检索 Connection生成此对象 Statement对象。
      int getFetchDirection()
      检索从数据库表中获取行的方向,该方向是从此 Statement对象生成的结果集的缺省值。
      int getFetchSize()
      检索结果集合的行数是默认为获取大小 ResultSet从该生成的对象 Statement对象。
      ResultSet getGeneratedKeys()
      检索由于执行此 Statement对象而创建的任何自动生成的密钥。
      default long getLargeMaxRows()
      检索此 ResultSet对象生成的 Statement对象可包含的最大行数。
      default long getLargeUpdateCount()
      检索当前结果作为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。
      int getMaxFieldSize()
      检索此 ResultSet对象生成的 Statement对象中可以为字符和二进制列值返回的最大字节数。
      int getMaxRows()
      检索此 ResultSet对象生成的 Statement对象可包含的最大行数。
      boolean getMoreResults()
      移动到此 Statement对象的下一个结果,如果它是 ResultSet对象,则返回 true ,并隐式关闭使用方法 getResultSet获得的任何当前 ResultSet对象。
      boolean getMoreResults​(int current)
      移动到此 Statement对象的下一个结果,根据给定标志指定的指令处理任何当前的 ResultSet对象,如果下一个结果是 ResultSet对象,则返回 true 。
      int getQueryTimeout()
      检索驱动程序等待 Statement对象执行的 Statement 。
      ResultSet getResultSet()
      以 ResultSet对象的形式检索当前结果。
      int getResultSetConcurrency()
      检索此 ResultSet对象生成的 Statement对象的结果集并发性。
      int getResultSetHoldability()
      检索此 ResultSet对象生成的 Statement对象的结果集可保存性。
      int getResultSetType()
      检索此 ResultSet对象生成的 Statement对象的结果集类型。
      int getUpdateCount()
      检索当前结果作为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。
      SQLWarning getWarnings()
      检索此 Statement对象上的调用报告的第一个警告。
      boolean isClosed()
      检索此 Statement对象是否已关闭。
      boolean isCloseOnCompletion()
      返回一个值,该值指示在关闭所有相关结果集时是否将关闭此 Statement 。
      boolean isPoolable()
      返回一个值,指示 Statement是否可以使用。
      default boolean isSimpleIdentifier​(String identifier)
      检索 identifier是否是简单的SQL标识符。
      void setCursorName​(String name)
      将SQL游标名称设置为给定的 String ,这将由后续的 Statement对象 execute方法使用。
      void setEscapeProcessing​(boolean enable)
      打开或关闭转义处理。
      void setFetchDirection​(int direction)
      为驱动程序提供有关在使用此 Statement对象创建的 ResultSet对象中处理行的方向的提示。
      void setFetchSize​(int rows)
      当此 Statement生成的 ResultSet对象需要更多行时, ResultSet JDBC驱动程序提供有关应从数据库中提取的行数的提示。
      default void setLargeMaxRows​(long max)
      设置此 ResultSet对象生成的任何 Statement对象可包含的最大行数限制为给定数字。
      void setMaxFieldSize​(int max)
      设置此 ResultSet对象生成的 Statement对象中字符和二进制列值可返回的最大字节数限制。
      void setMaxRows​(int max)
      设置此 ResultSet对象生成的任何 Statement对象可以包含的最大行数限制为给定数字。
      void setPoolable​(boolean poolable)
      请求汇集或不汇集 Statement 。
      void setQueryTimeout​(int seconds)
      设置驱动程序等待 Statement对象执行到指定秒数的秒数。
    • 字段详细信息

      • CLOSE_CURRENT_RESULT

        static final int CLOSE_CURRENT_RESULT
        该常量指示在调用 getMoreResults时应关闭当前的 ResultSet对象。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • KEEP_CURRENT_RESULT

        static final int KEEP_CURRENT_RESULT
        该常量指示在调用 getMoreResults时不应关闭当前的 ResultSet对象。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • CLOSE_ALL_RESULTS

        static final int CLOSE_ALL_RESULTS
        该常量指示在调用 getMoreResults时应关闭先前保持打开的所有 ResultSet对象。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • SUCCESS_NO_INFO

        static final int SUCCESS_NO_INFO
        该常量指示批处理语句已成功执行但不影响其受影响的行数。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • EXECUTE_FAILED

        static final int EXECUTE_FAILED
        该常量指示执行批处理语句时发生错误。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • RETURN_GENERATED_KEYS

        static final int RETURN_GENERATED_KEYS
        常量表示生成的键应该可用于检索。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
      • NO_GENERATED_KEYS

        static final int NO_GENERATED_KEYS
        该常量指示不应使生成的键可用于检索。
        从以下版本开始:
        1.4
        另请参见:
        常数字段值
    • 方法详细信息

      • executeQuery

        ResultSet executeQuery​(String sql)
                        throws SQLException
        执行给定的SQL语句,该语句返回单个ResultSet对象。

        注意:不能在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 要发送到数据库的SQL语句,通常是静态SQL SELECT语句
        结果
        包含给定查询生成的数据的ResultSet对象; 从来没有null
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,给定的SQL语句生成除单个 ResultSet对象之外的任何内容,该方法在 PreparedStatement或 CallableStatement
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
      • executeUpdate

        int executeUpdate​(String sql)
                   throws SQLException
        执行给定的SQL语句,这可能是INSERT , UPDATE ,或DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,给定的SQL语句生成 ResultSet对象,该方法在 PreparedStatement或 CallableStatement
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
      • close

        void close()
            throws SQLException
        立即释放此Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。 通常,最好在完成资源后立即释放资源,以避免占用数据库资源。

        在已关闭的Statement对象上调用方法close无效。

        注意:关闭Statement对象时,其当前的ResultSet对象(如果存在)也将关闭。

        Specified by:
        close ,界面 AutoCloseable
        异常
        SQLException - 如果发生数据库访问错误
      • getMaxFieldSize

        int getMaxFieldSize()
                     throws SQLException
        检索此ResultSet对象生成的Statement对象中可以为字符和二进制列值返回的最大字节数。 此限制仅适用于BINARY , VARBINARY , LONGVARBINARY , CHAR , VARCHAR , NCHAR , NVARCHAR , LONGNVARCHAR个LONGVARCHAR列。 如果超出限制,则会以静默方式丢弃多余的数据。
        结果
        存储字符和二进制值的列的当前列大小限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        setMaxFieldSize(int)
      • setMaxFieldSize

        void setMaxFieldSize​(int max)
                      throws SQLException
        设置此ResultSet对象生成的Statement对象中可以为字符和二进制列值返回的最大字节数限制。 此限制仅适用于BINARY , VARBINARY , LONGVARBINARY , CHAR , VARCHAR , NCHAR , NVARCHAR , LONGNVARCHAR个LONGVARCHAR领域。 如果超出限制,则会以静默方式丢弃多余的数据。 为获得最大的可移植性,请使用大于256的值。
        参数
        max - 新的列大小限制(以字节为单位); 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,或者不满足条件 max >= 0
        另请参见:
        getMaxFieldSize()
      • getMaxRows

        int getMaxRows()
                throws SQLException
        检索此ResultSet对象生成的Statement对象可包含的最大行数。 如果超出此限制,则会以静默方式删除多余的行。
        结果
        此ResultSet对象生成的Statement对象的当前最大行数; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        setMaxRows(int)
      • setMaxRows

        void setMaxRows​(int max)
                 throws SQLException
        设置此ResultSet对象生成的任何Statement对象可包含的最大行数限制为给定数字。 如果超出限制,则会以静默方式删除多余的行。
        参数
        max - 新的最大行限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,或者不满足条件 max >= 0
        另请参见:
        getMaxRows()
      • setEscapeProcessing

        void setEscapeProcessing​(boolean enable)
                          throws SQLException
        打开或关闭转义处理。 如果启用了转义扫描(默认设置),则驱动程序将在将SQL语句发送到数据库之前执行转义替换。

        Connection和DataSource字段escapeProcessing可用于更改默认转义处理行为。 值true(默认值)启用所有Statement对象的转义处理。 值false将禁用所有Statement对象的转义处理。 setEscapeProcessing方法可用于指定单个Statement对象的转义处理行为。

        注意:由于在进行此调用之前通常已解析PreparedStatements准备语句,因此禁用PreparedStatements对象的转义处理将不起作用。

        参数
        enable - true启用转义处理; false禁用它
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
      • getQueryTimeout

        int getQueryTimeout()
                     throws SQLException
        检索驱动程序等待Statement对象执行的Statement 。 如果超出限制,则抛出SQLException 。
        结果
        当前查询超时限制,以秒为单位; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        setQueryTimeout(int)
      • setQueryTimeout

        void setQueryTimeout​(int seconds)
                      throws SQLException
        将驱动程序等待Statement对象执行的秒数设置为给定的秒数。 默认情况下,运行语句完成所允许的时间量没有限制。 如果超出限制,则抛出SQLTimeoutException 。 JDBC驱动程序必须将此限制到execute , executeQuery和executeUpdate方法。

        注意: JDBC驱动程序实现也可能将此限制应用于ResultSet方法(有关详细信息,请参阅驱动程序供应商文档)。

        注意:在的情况下Statement配料,它被执行定义为超时是否被施加到经由所添加的单个SQL命令addBatch方法或通过调用SQL命令的整批executeBatch方法(请与驱动程序供应商的文档详情)。

        参数
        seconds - 新的查询超时限制,以秒为单位; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,或者不满足条件 seconds >= 0
        另请参见:
        getQueryTimeout()
      • cancel

        void cancel()
             throws SQLException
        如果DBMS和驱动程序都支持中止SQL语句,则取消此Statement对象。 一个线程可以使用此方法来取消正由另一个线程执行的语句。
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      • getWarnings

        SQLWarning getWarnings()
                        throws SQLException
        检索此Statement对象上的调用报告的第一个警告。 随后的Statement对象警告将链接到此SQLWarning对象。

        每次(重新)执行语句时,警告链都会自动清除。 可以不在关闭的Statement对象上调用此方法; 这样做会导致SQLException被抛出。

        注意:如果您正在处理ResultSet对象,则与该ResultSet对象上的读取相关联的任何警告将链接在该对象上,而不是链接到生成它的Statement对象上。

        结果
        第一个 SQLWarning对象或 null如果没有警告
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
      • clearWarnings

        void clearWarnings()
                    throws SQLException
        清除此Statement对象上报告的所有警告。 在调用该方法之后,方法getWarnings将返回null直到针对该Statement对象报告新警告。
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
      • setCursorName

        void setCursorName​(String name)
                    throws SQLException
        将SQL游标名称设置为给定的String ,这将由后续的Statement对象execute方法使用。 然后,可以在SQL定位更新或删除语句中使用此名称来标识此语句生成的ResultSet对象中的当前行。 如果数据库不支持定位更新/删除,则此方法是noop。 为确保游标具有适当的隔离级别以支持更新,游标的SELECT语句的格式应为SELECT FOR UPDATE 。 如果FOR UPDATE不存在,则定位的更新可能会失败。

        注意:根据定义,定位更新和删除的执行必须由与生成用于定位的ResultSet对象的对象不同的Statement对象完成。 此外,游标名称在连接中必须是唯一的。

        参数
        name - 新游标名称,在连接中必须是唯一的
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      • execute

        boolean execute​(String sql)
                 throws SQLException
        执行给定的SQL语句,该语句可能返回多个结果。 在某些(不常见的)情况下,单个SQL语句可能会返回多个结果集和/或更新计数。 通常,您可以忽略此操作,除非您(1)执行您知道可能返回多个结果的存储过程或(2)您正在动态执行未知的SQL字符串。

        execute方法执行SQL语句并指示第一个结果的形式。 然后,您必须使用方法getResultSet或getUpdateCount来检索结果,然后使用getMoreResults移动到任何后续结果。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 任何SQL语句
        结果
        true如果第一个结果是ResultSet对象; false如果是更新计数或没有结果
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,该方法在 PreparedStatement或 CallableStatement
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        另请参见:
        getResultSet() , getUpdateCount() , getMoreResults()
      • getResultSet

        ResultSet getResultSet()
                        throws SQLException
        以ResultSet对象的形式检索当前结果。 每个结果只应调用一次此方法。
        结果
        当前结果为 ResultSet对象或 null如果结果是更新计数或没有更多结果
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        execute(java.lang.String)
      • getUpdateCount

        int getUpdateCount()
                    throws SQLException
        检索当前结果作为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。 每个结果只应调用一次此方法。
        结果
        当前结果作为更新计数; -1如果当前结果是ResultSet对象或没有更多结果
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        execute(java.lang.String)
      • getMoreResults

        boolean getMoreResults()
                        throws SQLException
        移动到此Statement对象的下一个结果,返回true如果是ResultSet对象,并隐式关闭任何电流ResultSet的方法获得(多个)对象getResultSet 。

        满足以下条件时,没有更多结果:

           // stmt is a Statement object ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))  
        结果
        true如果下一个结果是ResultSet对象; false如果是更新计数或没有更多结果
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        另请参见:
        execute(java.lang.String)
      • setFetchDirection

        void setFetchDirection​(int direction)
                        throws SQLException
        为驱动程序提供有关在使用此Statement对象创建的ResultSet对象中处理行的方向的提示。 默认值为ResultSet.FETCH_FORWARD 。

        请注意,此方法设置此Statement对象生成的结果集的默认提取方向。 每个结果集都有自己的方法来获取和设置自己的获取方向。

        参数
        direction - 处理行的初始方向
        异常
        SQLException -如果发生数据库访问错误,该方法被称为在关闭的 Statement或给定的方向不是之一 ResultSet.FETCH_FORWARD , ResultSet.FETCH_REVERSE ,或 ResultSet.FETCH_UNKNOWN
        从以下版本开始:
        1.2
        另请参见:
        getFetchDirection()
      • getFetchDirection

        int getFetchDirection()
                       throws SQLException
        检索从数据库表中获取行的方向,该方向是从此Statement对象生成的结果集的缺省值。 如果此Statement对象未通过调用方法setFetchDirection设置获取方向,则返回值是特定于实现的。
        结果
        从此 Statement对象生成的结果集的默认提取方向
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.2
        另请参见:
        setFetchDirection(int)
      • setFetchSize

        void setFetchSize​(int rows)
                   throws SQLException
        当此Statement生成的ResultSet对象需要更多行时,为JDBC驱动程序提供有关应从数据库中提取的行数的提示。 如果指定的值为零,则忽略提示。 默认值为零。
        参数
        rows - 要获取的行数
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,或者不满足条件 rows >= 0 。
        从以下版本开始:
        1.2
        另请参见:
        getFetchSize()
      • getFetchSize

        int getFetchSize()
                  throws SQLException
        检索结果集合的行数是默认为获取大小ResultSet从该生成的对象Statement对象。 如果此Statement对象未通过调用方法setFetchSize设置提取大小,则返回值是特定于实现的。
        结果
        从此 Statement对象生成的结果集的默认提取大小
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.2
        另请参见:
        setFetchSize(int)
      • getResultSetConcurrency

        int getResultSetConcurrency()
                             throws SQLException
        检索此 ResultSet对象生成的 Statement对象的结果集并发。
        结果
        ResultSet.CONCUR_READ_ONLY或 ResultSet.CONCUR_UPDATABLE
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.2
      • getResultSetType

        int getResultSetType()
                      throws SQLException
        检索此 ResultSet对象生成的 Statement对象的结果集类型。
        结果
        之一 ResultSet.TYPE_FORWARD_ONLY , ResultSet.TYPE_SCROLL_INSENSITIVE ,或 ResultSet.TYPE_SCROLL_SENSITIVE
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.2
      • addBatch

        void addBatch​(String sql)
               throws SQLException
        将给定的SQL命令添加到此Statement对象的当前命令列表中。 通过调用方法executeBatch可以批量执行此列表中的命令。

        注意:不能在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 通常这是SQL INSERT或 UPDATE语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,驱动程序不支持批量更新,该方法在 PreparedStatement或 CallableStatement
        从以下版本开始:
        1.2
        另请参见:
        executeBatch() , DatabaseMetaData.supportsBatchUpdates()
      • executeBatch

        int[] executeBatch()
                    throws SQLException
        将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。 返回的数组的int元素按顺序对应批处理中的命令,这些命令根据它们添加到批处理的顺序进行排序。 方法executeBatch返回的数组中的元素可以是以下之一:
        1. 大于或等于零的数字 - 表示命令已成功处理,并且是一个更新计数,给出数据库中受命令执行影响的行数
        2. 值SUCCESS_NO_INFO - 表示命令已成功处理,但受影响的行数未知

          如果批量更新中的某个命令无法正确执行,则此方法将抛出BatchUpdateException ,并且JDBC驱动程序可能会也可能不会继续处理批处理中的其余命令。 但是,驱动程序的行为必须与特定的DBMS一致,要么始终继续处理命令,要么永远不会继续处理命令。 如果驱动程序在失败后继续处理,则方法BatchUpdateException.getUpdateCounts返回的数组将包含与批处理中的命令一样多的元素,并且至少一个元素将如下所示:

        3. 值EXECUTE_FAILED - 表示命令无法成功执行,仅在命令失败后驱动程序继续处理命令时才会发生

        可能的实现和返回值已在Java 2 SDK标准版1.3版中进行了修改,以适应在抛出BatchUpdateException对象后继续处理批量更新中的命令的选项。

        结果
        一组更新计数,包含批处理中每个命令的一个元素。 根据命令添加到批处理的顺序对数组的元素进行排序。
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的Statement上调用此方法,否则驱动程序不支持批处理语句。 抛出BatchUpdateException (的一个子类SQLException )如果发送到数据库的命令之一无法正确执行或者尝试返回的结果集。
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.2
        另请参见:
        addBatch(java.lang.String) , DatabaseMetaData.supportsBatchUpdates()
      • getConnection

        Connection getConnection()
                          throws SQLException
        检索 Connection生成此对象 Statement对象。
        结果
        产生此声明的连接
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.2
      • getMoreResults

        boolean getMoreResults​(int current)
                        throws SQLException
        移动到此Statement对象的下一个结果,根据给定标志指定的指令处理任何当前的ResultSet对象,如果下一个结果是ResultSet对象,则返回true 。

        满足以下条件时,没有更多结果:

           // stmt is a Statement object ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))  
        参数
        current -下列之一的 Statement常数指示应该发生什么电流 ResultSet获取的对象使用该方法 getResultSet : Statement.CLOSE_CURRENT_RESULT , Statement.KEEP_CURRENT_RESULT ,或 Statement.CLOSE_ALL_RESULTS
        结果
        true如果下一个结果是ResultSet对象; false如果是更新计数或没有更多结果
        异常
        SQLException -如果发生数据库访问错误,该方法被称为在关闭的 Statement ,或者提供的参数不是下列中的一种: Statement.CLOSE_CURRENT_RESULT , Statement.KEEP_CURRENT_RESULT或 Statement.CLOSE_ALL_RESULTS
        SQLFeatureNotSupportedException - 如果 DatabaseMetaData.supportsMultipleOpenResults返回 false ,则提供 Statement.KEEP_CURRENT_RESULT或 Statement.CLOSE_ALL_RESULTS作为参数。
        从以下版本开始:
        1.4
        另请参见:
        execute(java.lang.String)
      • getGeneratedKeys

        ResultSet getGeneratedKeys()
                            throws SQLException
        检索由于执行此Statement对象而创建的任何自动生成的密钥。 如果此Statement对象未生成任何键,则返回空的ResultSet对象。

        注意:如果未指定表示自动生成的键的列,则JDBC驱动程序实现将确定最能代表自动生成的键的列。

        结果
        一个 ResultSet包含由该的执行而生成的自动生成的密钥(或多个)对象 Statement对象
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        从以下版本开始:
        1.4
      • executeUpdate

        int executeUpdate​(String sql,
                          int autoGeneratedKeys)
                   throws SQLException
        执行给定的SQL语句,并使用给定标志向驱动程序发出信号,告知该Statement对象生成的自动生成的密钥是否可用于检索。 如果SQL语句不是INSERT语句,或者能够返回自动生成的密钥的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        autoGeneratedKeys - 指示是否应使自动生成的密钥可用于检索的标志; 以下常量之一: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,给定的SQL语句返回 ResultSet对象,给定的常量不是允许的常量之一,该方法在 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,并且常量为Statement.RETURN_GENERATED_KEYS
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
      • executeUpdate

        int executeUpdate​(String sql,
                          int[] columnIndexes)
                   throws SQLException
        执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中列的索引,这些列包含应该可用的自动生成的键。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        注意:不能在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        columnIndexes - 列索引数组,指示应从插入的行返回的列
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,SQL语句返回 ResultSet对象,提供给此方法的第二个参数不是 int数组,其元素是有效的列索引,该方法被调用 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
      • executeUpdate

        int executeUpdate​(String sql,
                          String[] columnNames)
                   throws SQLException
        执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中包含应该可用的自动生成的键的列的名称。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        columnNames - 应从插入的行返回的列的名称数组
        结果
        无论是行数 INSERT , UPDATE ,或 DELETE语句,或者为0,SQL语句不返回任何内容
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,SQL语句返回 ResultSet对象,提供给此方法的第二个参数不是 String数组,其元素是有效的列名,该方法被调用 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
      • execute

        boolean execute​(String sql,
                        int autoGeneratedKeys)
                 throws SQLException
        执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,告知任何自动生成的键应该可用于检索。 如果SQL语句不是INSERT语句,或者能够返回自动生成的密钥的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略此信号。

        在某些(不常见的)情况下,单个SQL语句可能会返回多个结果集和/或更新计数。 通常,您可以忽略此操作,除非您(1)执行您知道可能返回多个结果的存储过程或(2)您正在动态执行未知的SQL字符串。

        execute方法执行SQL语句并指示第一个结果的形式。 然后,您必须使用方法getResultSet或getUpdateCount来检索结果,然后使用getMoreResults移动到任何后续结果。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 任何SQL语句
        autoGeneratedKeys - 一个常量,指示是否应使用方法getGeneratedKeys使自动生成的密钥可用于检索; 以下常量之一: Statement.RETURN_GENERATED_KEYS或Statement.NO_GENERATED_KEYS
        结果
        true如果第一个结果是ResultSet对象; false如果是更新计数或没有结果
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,提供给此方法的第二个参数不是 Statement.RETURN_GENERATED_KEYS或 Statement.NO_GENERATED_KEYS ,该方法在 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,并且常量为Statement.RETURN_GENERATED_KEYS
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
        另请参见:
        getResultSet() , getUpdateCount() , getMoreResults() , getGeneratedKeys()
      • execute

        boolean execute​(String sql,
                        int[] columnIndexes)
                 throws SQLException
        执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中列的索引,这些列包含应该可用的自动生成的键。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        在某些(不常见)情况下,单个SQL语句可能返回多个结果集和/或更新计数。 通常,您可以忽略此操作,除非您(1)执行您知道可能返回多个结果的存储过程或(2)您正在动态执行未知的SQL字符串。

        execute方法执行SQL语句并指示第一个结果的形式。 然后,您必须使用方法getResultSet或getUpdateCount来检索结果,然后使用getMoreResults移动到任何后续结果。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 任何SQL语句
        columnIndexes - 插入行中列的索引数组,应通过调用方法 getGeneratedKeys进行检索
        结果
        true如果第一个结果是ResultSet对象; false如果是更新计数或没有结果
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,传递给此方法的 int数组中的元素不是有效的列索引,该方法在 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
        另请参见:
        getResultSet() , getUpdateCount() , getMoreResults()
      • execute

        boolean execute​(String sql,
                        String[] columnNames)
                 throws SQLException
        执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中包含应该可用的自动生成的键的列的名称。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        在某些(不常见的)情况下,单个SQL语句可能会返回多个结果集和/或更新计数。 通常,您可以忽略此操作,除非您(1)执行您知道可能返回多个结果的存储过程或(2)您正在动态执行未知的SQL字符串。

        execute方法执行SQL语句并指示第一个结果的形式。 然后,您必须使用方法getResultSet或getUpdateCount来检索结果,然后使用getMoreResults移动到任何后续结果。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        参数
        sql - 任何SQL语句
        columnNames - 插入行中列的名称数组,应通过调用方法 getGeneratedKeys使其可用于检索
        结果
        true如果下一个结果是ResultSet对象; false如果是更新计数或没有更多结果
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,传递给此方法的 String数组的元素不是有效的列名,该方法在 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.4
        另请参见:
        getResultSet() , getUpdateCount() , getMoreResults() , getGeneratedKeys()
      • getResultSetHoldability

        int getResultSetHoldability()
                             throws SQLException
        检索此 ResultSet对象生成的 Statement对象的结果集可 ResultSet 。
        结果
        ResultSet.HOLD_CURSORS_OVER_COMMIT或 ResultSet.CLOSE_CURSORS_AT_COMMIT
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.4
      • isClosed

        boolean isClosed()
                  throws SQLException
        检索此Statement对象是否已关闭。 如果已在其上调用方法关闭,或者它已自动关闭,则关闭Statement 。
        结果
        如果此Statement对象已关闭, Statement true;否则为Statement 。 如果它仍然打开则为false
        异常
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        1.6
      • setPoolable

        void setPoolable​(boolean poolable)
                  throws SQLException
        要求汇集或不汇集Statement 。 指定的值是语句池实现的提示,指示应用程序是否希望将语句合并。 由语句池管理器决定是否使用提示。

        语句的poolable值适用于由驱动程序实现的内部语句高速缓存和由应用程序服务器和其他应用程序实现的外部语句高速缓存。

        默认情况下, Statement在创建时不可用,并且PreparedStatement和CallableStatement在创建时可以使用。

        参数
        poolable - 如果为true,则请求将该语句合并,如果为false,则声明该语句不被合并
        异常
        SQLException - 如果在关闭的 Statement上调用此方法
        从以下版本开始:
        1.6
      • isPoolable

        boolean isPoolable()
                    throws SQLException
        返回一个值,指示 Statement是否可以使用。
        结果
        true如果Statement可以使用; 否则为false
        异常
        SQLException - 如果在关闭的 Statement上调用此方法
        从以下版本开始:
        1.6
        另请参见:
        setPoolable(boolean)
      • closeOnCompletion

        void closeOnCompletion()
                        throws SQLException
        指定在关闭所有相关结果集时将关闭此Statement 。 如果执行Statement不生成任何结果集,则此方法无效。

        注意:多次调用closeOnCompletion不会切换对此Statement的影响。 但是,对closeOnCompletion的调用closeOnCompletion会影响语句的后续执行以及当前具有开放依赖结果集的语句。

        异常
        SQLException - 如果在关闭的 Statement上调用此方法
        从以下版本开始:
        1.7
      • isCloseOnCompletion

        boolean isCloseOnCompletion()
                             throws SQLException
        返回一个值,该值指示在关闭所有相关结果集时是否将关闭此 Statement 。
        结果
        true如果Statement在其所有相关结果集关闭时将关闭; 否则为false
        异常
        SQLException - 如果在关闭的 Statement上调用此方法
        从以下版本开始:
        1.7
      • getLargeUpdateCount

        default long getLargeUpdateCount()
                                  throws SQLException
        检索当前结果作为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。 每个结果只应调用一次此方法。

        当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。

        默认实现将抛出UnsupportedOperationException

        结果
        当前结果作为更新计数; -1如果当前结果是ResultSet对象或没有更多结果
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.8
        另请参见:
        execute(java.lang.String)
      • setLargeMaxRows

        default void setLargeMaxRows​(long max)
                              throws SQLException
        设置此ResultSet对象生成的任何Statement对象可包含的最大行数限制为给定数字。 如果超出限制,则会以静默方式删除多余的行。

        当行限制可能超过Integer.MAX_VALUE时,应使用此方法。

        默认实现将抛出UnsupportedOperationException

        参数
        max - 新的最大行限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,或者不满足条件 max >= 0
        从以下版本开始:
        1.8
        另请参见:
        getMaxRows()
      • getLargeMaxRows

        default long getLargeMaxRows()
                              throws SQLException
        检索此ResultSet对象生成的Statement对象可包含的最大行数。 如果超出此限制,则会以静默方式删除多余的行。

        当返回的行限制可能超过Integer.MAX_VALUE时,应使用此方法。

        默认实现将返回0

        结果
        此ResultSet对象生成的Statement对象的当前最大行数; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement上调用此方法
        从以下版本开始:
        1.8
        另请参见:
        setMaxRows(int)
      • executeLargeBatch

        default long[] executeLargeBatch()
                                  throws SQLException
        将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。 返回的数组的long元素被排序为与批处理中的命令相对应,这些命令根据它们添加到批处理的顺序进行排序。 方法executeLargeBatch返回的数组中的元素可以是以下之一:
        1. 大于或等于零的数字 - 表示命令已成功处理,并且是一个更新计数,给出数据库中受命令执行影响的行数
        2. 值SUCCESS_NO_INFO - 表示命令已成功处理,但受影响的行数未知

          如果批量更新中的某个命令无法正确执行,则此方法将抛出BatchUpdateException ,并且JDBC驱动程序可能会也可能不会继续处理批处理中的其余命令。 但是,驱动程序的行为必须与特定的DBMS一致,要么始终继续处理命令,要么永远不会继续处理命令。 如果驱动程序在失败后继续处理,则方法BatchUpdateException.getLargeUpdateCounts返回的数组将包含与批处理中的命令一样多的元素,并且至少有一个元素如下:

        3. 值EXECUTE_FAILED - 表示命令无法成功执行,仅在命令失败后驱动程序继续处理命令时才会发生

        当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。

        默认实现将抛出UnsupportedOperationException

        结果
        一组更新计数,包含批处理中每个命令的一个元素。 根据命令添加到批处理的顺序对数组的元素进行排序。
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的Statement上调用此方法,或者驱动程序不支持批处理语句。 抛出BatchUpdateException (的一个子类SQLException )如果发送到数据库的命令之一无法正确执行或者尝试返回的结果集。
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.8
        另请参见:
        addBatch(java.lang.String) , DatabaseMetaData.supportsBatchUpdates()
      • executeLargeUpdate

        default long executeLargeUpdate​(String sql)
                                 throws SQLException
        执行给定的SQL语句,这可能是INSERT , UPDATE ,或DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。

        当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        默认实现将抛出UnsupportedOperationException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,给定的SQL语句生成 ResultSet对象,该方法在 PreparedStatement或 CallableStatement
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.8
      • executeLargeUpdate

        default long executeLargeUpdate​(String sql,
                                        int autoGeneratedKeys)
                                 throws SQLException
        执行给定的SQL语句,并通过给定标志向驱动程序发出信号,告知该Statement对象生成的自动生成的密钥是否可用于检索。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。

        当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        autoGeneratedKeys - 指示是否应使自动生成的密钥可用于检索的标志; 以下常量之一: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,给定的SQL语句返回 ResultSet对象,给定的常量不是允许的常量之一,该方法在 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法,并且常量为Statement.RETURN_GENERATED_KEYS
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.8
      • executeLargeUpdate

        default long executeLargeUpdate​(String sql,
                                        int[] columnIndexes)
                                 throws SQLException
        执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中列的索引,这些列包含应该可用的自动生成的键。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        columnIndexes - 列索引数组,指示应从插入的行返回的列
        结果
        (1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,SQL语句返回 ResultSet对象,提供给此方法的第二个参数不是 int数组,其元素是有效的列索引,该方法被调用 PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值并且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.8
      • executeLargeUpdate

        default long executeLargeUpdate​(String sql,
                                        String[] columnNames)
                                 throws SQLException
        执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。 此数组包含目标表中包含应该可用的自动生成的键的列的名称。 如果SQL语句不是INSERT语句,或者能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

        当返回的行数超过Integer.MAX_VALUE时,应使用此方法。

        注意:无法在PreparedStatement或CallableStatement上调用此方法。

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERT , UPDATE或DELETE ; 或者不返回任何内容的SQL语句,例如DDL语句。
        columnNames - 应从插入行返回的列名称数组
        结果
        无论是行数 INSERT , UPDATE ,或 DELETE语句,或者为0,SQL语句不返回任何内容
        异常
        SQLException - 如果发生数据库访问错误,则在关闭的 Statement上调用此方法,SQL语句返回 ResultSet对象,提供给此方法的第二个参数不是 String数组,其元素是有效的列名,该方法被调用a PreparedStatement或 CallableStatement
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        SQLTimeoutException - 当驱动程序确定已超出 setQueryTimeout方法指定的超时值且至少尝试取消当前运行的 Statement
        从以下版本开始:
        1.8
      • enquoteLiteral

        default String enquoteLiteral​(String val)
                               throws SQLException
        返回用单引号括起来的String 。 字符串中出现的任何单引号都将被两个单引号替换。
        Examples of the conversion:
        Value Result
        Hello 'Hello'
        G'Day 'G''Day'
        'G''Day' '''G''''Day'''
        I'''M 'I''''''M'
        Implementation Note:
        JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
        参数
        val - 字符串
        结果
        由单引号括起来的字符串,每个引号都转换为两个单引号
        异常
        NullPointerException - 如果val是 null
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        9
      • enquoteIdentifier

        default String enquoteIdentifier​(String identifier,
                                         boolean alwaysQuote)
                                  throws SQLException
        返回SQL标识符。 如果identifier是一个简单的SQL标识符:
        • 如果alwaysQuote是false则返回原始值
        • 如果alwaysQuote是true则返回分隔标识符
        如果identifier不是简单的SQL标识符,则identifier将用双引号括起来(如果尚未存在)。 如果数据源不支持分隔标识符的双引号,则标识符应由DatabaseMetaData.getIdentifierQuoteString()返回的字符串括起来。 如果数据源不支持分隔标识符,则应抛出SQLFeatureNotSupportedException 。

        甲SQLException如果将被抛出identifier包含在分隔标识符无效的任何字符或标识符长度为数据源无效。

        实现要求:
        默认实现使用以下条件来确定有效的简单SQL标识符:
        • 该字符串未用双引号括起来
        • 第一个字符是从a到z或从A到Z的字母字符
        • 该名称仅包含字母数字字符或字符“_”
        如果出现以下情况,默认实现将抛出SQLException :
        • identifier包含一个null字符或双引号,并不是一个简单的SQL标识符。
        • identifier的长度小于1或大于128个字符
        Examples of the conversion:
        identifier alwaysQuote Result
        Hello false Hello
        Hello true "Hello"
        G'Day false "G'Day"
        "Bruce Wayne" false "Bruce Wayne"
        "Bruce Wayne" true "Bruce Wayne"
        GoodDay$ false "GoodDay$"
        Hello"World false SQLException
        "Hello"World" false SQLException
        Implementation Note:
        JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
        参数
        identifier - SQL标识符
        alwaysQuote - 指示是否应将简单SQL标识符作为带引号的标识符返回
        结果
        简单的SQL标识符或分隔的标识符
        异常
        SQLException - 如果标识符不是有效标识符
        SQLFeatureNotSupportedException - 如果数据源不支持分隔标识符
        NullPointerException - 如果标识符是 null
        从以下版本开始:
        9
      • isSimpleIdentifier

        default boolean isSimpleIdentifier​(String identifier)
                                    throws SQLException
        检索 identifier是否是简单的SQL标识符。
        实现要求:
        默认实现使用以下条件来确定有效的简单SQL标识符:
        • 该字符串未用双引号括起来
        • 第一个字符是从a到z或从A到Z的字母字符
        • 该字符串仅包含字母数字字符或字符“_”
        • 字符串的长度介于1到128个字符之间
        Examples of the conversion:
        identifier Simple Identifier
        Hello true
        G'Day false
        "Bruce Wayne" false
        GoodDay$ false
        Hello"World false
        "Hello"World" false
        Implementation Note:
        JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
        参数
        identifier - SQL标识符
        结果
        如果是简单的SQL标识符,则为true,否则为false
        异常
        NullPointerException - 如果标识符是 null
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        9
      • enquoteNCharLiteral

        default String enquoteNCharLiteral​(String val)
                                    throws SQLException
        返回String表示用单引号括起来的国家字符集文字,并以大写字母N为前缀。字符串中任何单引号的出现都将被两个单引号替换。
        Examples of the conversion:
        Value Result
        Hello N'Hello'
        G'Day N'G''Day'
        'G''Day' N'''G''''Day'''
        I'''M N'I''''''M'
        N'Hello' N'N''Hello'''
        Implementation Note:
        JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。 enquoteNCharLiteral的实现可以接受与enquoteLiteral的相同驱动程序实现所接受的字符集不同的字符集。
        参数
        val - 字符串
        结果
        用两个单引号字符替换参数中的每个单引号字符的结果,其中整个结果的前缀为“N”。
        异常
        NullPointerException - 如果val是 null
        SQLException - 如果发生数据库访问错误
        从以下版本开始:
        9