Module  java.sql
软件包  java.sql

Interface Statement

  • All Superinterfaces:
    AutoCloseableWrapper
    All Known Subinterfaces:
    CallableStatementPreparedStatement


    public interface Statement
    extends Wrapper, AutoCloseable

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

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

    从以下版本开始:
    1.1
    另请参见:
    Connection.createStatement()ResultSet
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      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 
      Modifier and Type 方法 描述
      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语句,这可能是 INSERTUPDATE ,或 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语句,这可能是 INSERTUPDATE ,或 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是否可 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)
      给JDBC驱动程序提供一个关于应该从数据库中获取的行数,提供 ResultSetStatement生成的对象的更多行。
      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
        另请参见:
        Constant Field Values
      • KEEP_CURRENT_RESULT

        static final int KEEP_CURRENT_RESULT
        该常量表示当调用 getMoreResults时不应关闭当前的 ResultSet对象。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • CLOSE_ALL_RESULTS

        static final int CLOSE_ALL_RESULTS
        该常量指示所有 ResultSet以前已经保持开放对象应该调用时关闭 getMoreResults
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • SUCCESS_NO_INFO

        static final int SUCCESS_NO_INFO
        指示批处理语句执行成功但不影响其行数的常量可用的常量。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • EXECUTE_FAILED

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

        static final int RETURN_GENERATED_KEYS
        常数表示生成的密钥应该可用于检索。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
      • NO_GENERATED_KEYS

        static final int NO_GENERATED_KEYS
        常数表示生成的密钥不应该可用于检索。
        从以下版本开始:
        1.4
        另请参见:
        Constant Field Values
    • 方法详细信息

      • executeQuery

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

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql - 要发送到数据库的SQL语句,通常为静态SQL SELECT语句
        结果
        一个ResultSet对象,其中包含由给定查询生成的数据; 从不null
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,给定的SQL语句产生除单个 ResultSet对象之外的任何内容,该方法在 PreparedStatementCallableStatement
        SQLTimeoutException - 当驱动程序确定已经超过 setQueryTimeout方法指定的超时值,并且至少尝试取消当前正在运行的 Statement
      • executeUpdate

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

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERTUPDATEDELETE ; 或不返回任何内容的SQL语句,例如DDL语句。
        结果
        (1)SQL数据操作语言(DML)语句的行计数或(2)0不返回的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,给定的SQL语句生成一个 ResultSet对象,该方法在 PreparedStatementCallableStatement
        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对象。 此限制仅适用于BINARYVARBINARYLONGVARBINARYCHARVARCHARNCHARNVARCHARLONGNVARCHARLONGVARCHAR列。 如果超出限制,则会忽略多余的数据。
        结果
        存储字符和二进制值的列的当前列大小限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 Statement调用此方法 Statement
        另请参见:
        setMaxFieldSize(int)
      • setMaxFieldSize

        void setMaxFieldSize​(int max)
                      throws SQLException
        设置由ResultSet对象生成的Statement对象中的字符和二进制列值可以返回的最大字节数的限制。 此限制仅适用于BINARYVARBINARYLONGVARBINARYCHARVARCHARNCHARNVARCHARLONGNVARCHARLONGVARCHAR领域。 如果超出限制,则会忽略多余的数据。 为了最大可移植性,请使用大于256的值。
        参数
        max - 以字节为单位的新列大小限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement或条件 max >= 0不满足
        另请参见:
        getMaxFieldSize()
      • getMaxRows

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

        void setMaxRows​(int max)
                 throws SQLException
        设置的任何行的最大数目的极限ResultSet由此生成的对象Statement对象可以包含给定数目。 如果超出限制,则多余的行将被静默地丢弃。
        参数
        max - 新的最大行限制; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,此方法将在封闭的 StatementStatement或条件 max >= 0不满足
        另请参见:
        getMaxRows()
      • setEscapeProcessing

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

        ConnectionDataSource属性escapeProcessing可用于更改默认的转义处理行为。 值为true(默认值)启用对所有Statement对象的转义处理。 false值将禁用所有Statement对象的转义处理。 setEscapeProcessing方法可用于指定个人Statement对象的转义处理行为。

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

        参数
        enable - true以实现逃脱处理; false禁用它
        异常
        SQLException - 如果发生数据库访问错误或者在关闭的 Statement调用此方法 Statement
      • getQueryTimeout

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

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

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

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

        参数
        seconds - 新的查询超时限制(以秒为单位) 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement或条件 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调用此方法 Statement
      • setCursorName

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

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

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

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

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

        注意:此方法无法在PreparedStatementCallableStatement

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

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

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

        boolean getMoreResults​()
                        throws SQLException
        移动到此Statement对象的下一个结果,如果它是一个ResultSet对象,则返回true ,并隐式关闭使用方法getResultSet获取的任何当前的ResultSet对象。

        以下是没有更多的结果:

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

        void setFetchDirection​(int direction)
                        throws SQLException
        给司机的提示,在哪些行中的处理方向ResultSet使用该创建的对象Statement对象。 默认值为ResultSet.FETCH_FORWARD

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

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

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

        void setFetchSize​(int rows)
                   throws SQLException
        给JDBC驱动程序一个提示,当ResultSet生成的ResultSet对象需要更多行时,应该从数据库中提取的行Statement 如果指定的值为零,则提示将被忽略。 默认值为零。
        参数
        rows - 要获取的行数
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement或条件 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_ONLYResultSet.CONCUR_UPDATABLE
        异常
        SQLException - 如果发生数据库访问错误或者在关闭的 Statement调用此方法 Statement
        从以下版本开始:
        1.2
      • getResultSetType

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

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

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql - 通常这是一个SQL INSERTUPDATE语句
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,驱动程序不支持批量更新,该方法在 PreparedStatementCallableStatement
        从以下版本开始:
        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,Standard Edition,版本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获取的对象使用该方法 getResultSetStatement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULT ,或 Statement.CLOSE_ALL_RESULTS
        结果
        true如果下一个结果是一个ResultSet对象; false如果它是更新计数或没有更多的结果
        异常
        SQLException -如果发生数据库访问错误,该方法被称为在关闭 Statement或提供的参数不是以下之一: Statement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS
        SQLFeatureNotSupportedException -如果 DatabaseMetaData.supportsMultipleOpenResults返回 false ,要么 Statement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS被作为参数提供。
        从以下版本开始:
        1.4
        另请参见:
        execute(java.lang.String)
      • getGeneratedKeys

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

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

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

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

        注意:无法在PreparedStatementCallableStatement上调用此方法。

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

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

        注意:此方法无法在PreparedStatementCallableStatement

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

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

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERTUPDATEDELETE ; 或不返回任何内容的SQL语句,例如DDL语句。
        columnNames - 应该从插入的行返回的列的名称数组
        结果
        无论是行数 INSERTUPDATE ,或 DELETE语句,或者为0,SQL语句不返回任何内容
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,SQL语句返回一个 ResultSet对象,提供给此方法的第二个参数不是其元素为有效列名的 String数组,该方法被调用一个 PreparedStatementCallableStatement
        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语句并指示第一个结果的形式。 然后,您必须使用方法getResultSetgetUpdateCount来检索结果,然后getMoreResults移动到任何后续结果。

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql - 任何SQL语句
        autoGeneratedKeys - 表示使用方法getGeneratedKeys是否应使自动生成的密钥可用于检索的getGeneratedKeys ; 以下常数之一: Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS
        结果
        true如果第一个结果是一个ResultSet对象; false如果是更新计数或没有结果
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 Statement上调用,此方法提供的第二个参数不是 Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS ,该方法在 PreparedStatementCallableStatement
        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语句并指示第一个结果的形式。 然后,您必须使用方法getResultSetgetUpdateCount来检索结果,然后getMoreResults移动到任何后续结果。

        注意:此方法无法在PreparedStatementCallableStatement

        参数
        sql - 任何SQL语句
        columnIndexes - 插入行中列的索引数组,应该可用于通过调用方法进行检索 getGeneratedKeys
        结果
        true如果第一个结果是一个ResultSet对象; false如果是更新计数或没有结果
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,传递给此方法的 int数组中的元素不是有效的列索引,该方法在 PreparedStatementCallableStatement
        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语句并指示第一个结果的形式。 然后,您必须使用方法getResultSetgetUpdateCount来检索结果,然后getMoreResults移动到任何后续结果。

        注意:此方法无法在PreparedStatementCallableStatement

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

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

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

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

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

        默认情况下, Statement在创建时不可Statement ,并且在创建时可以PreparedStatementCallableStatement

        参数
        poolable - 请求将该语句合并,如果为true,并且该语句未被汇总(如果为false)
        异常
        SQLException - 如果此方法在关闭的 Statement
        从以下版本开始:
        1.6
      • isPoolable

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

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

        注意:多次呼叫closeOnCompletion不要切换对这个Statement的影响。 但是,调用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调用此方法 Statement
        从以下版本开始:
        1.8
        另请参见:
        execute(java.lang.String)
      • setLargeMaxRows

        default void setLargeMaxRows​(long max)
                              throws SQLException
        设置由此ResultSet对象生成的Statement对象可以包含给给定数量的最大行数的限制。 如果超出限制,则多余的行将被静默地丢弃。

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

        默认实现将抛出UnsupportedOperationException

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

        default long getLargeMaxRows​()
                              throws SQLException
        检索一个的最大行数ResultSet由此产生对象Statement对象可以包含。 如果超出此限制,多余的行将被静默地删除。

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

        默认实现将返回0

        结果
        行了的当前最大数目ResultSet由此产生对象Statement对象; 零意味着没有限制
        异常
        SQLException - 如果发生数据库访问错误或者在关闭的 Statement调用此方法 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 - 如果发生数据库访问错误,此方法在关闭的StatementStatement或驱动程序不支持批处理语句。 抛出BatchUpdateException (的一个子类SQLException )如果发送到数据库的命令之一无法正确执行或者尝试返回的结果集。
        SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout方法指定的超时值,并且至少尝试取消当前正在运行的 Statement
        从以下版本开始:
        1.8
        另请参见:
        addBatch(java.lang.String)DatabaseMetaData.supportsBatchUpdates()
      • executeLargeUpdate

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

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

        注意:此方法无法在PreparedStatementCallableStatement

        默认实现将抛出UnsupportedOperationException

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

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

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

        注意:此方法无法在PreparedStatementCallableStatement

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERTUPDATEDELETE ; 或不返回任何内容的SQL语句,例如DDL语句。
        autoGeneratedKeys - 指示自动生成的密钥是否可用于检索的标志; 以下常数之一: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
        结果
        (1)SQL数据操作语言(DML)语句的行计数或(2)0不返回的SQL语句
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,给定的SQL语句返回一个 ResultSet对象,给定常量不是允许的一个,该方法在 PreparedStatementCallableStatement
        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时,应使用此方法。

        注意:此方法无法在PreparedStatementCallableStatement

        默认实现将抛出SQLFeatureNotSupportedException

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

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

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

        注意:此方法无法在PreparedStatementCallableStatement

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        sql -一个SQL数据操纵语言(DML)语句,比如INSERTUPDATEDELETE ; 或不返回任何内容的SQL语句,例如DDL语句。
        columnNames - 应该从插入的行返回的列的名称数组
        结果
        无论是行数 INSERTUPDATE ,或 DELETE语句,或者为0,SQL语句不返回任何内容
        异常
        SQLException - 如果发生数据库访问错误,此方法在关闭的 StatementStatement ,SQL语句返回一个 ResultSet对象,提供给此方法的第二个参数不是一个 String数组,其元素是有效的列名,该方法被调用一个 PreparedStatementCallableStatement
        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标识符:
        • 如果alwaysQuotefalse则返回原始值
        • 如果alwaysQuotetrue返回分隔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