模块 java.sql
 java.sql

接口 Statement

所有父级接口:
AutoCloseable , Wrapper
所有已知的子接口:
CallableStatement , PreparedStatement

public interface Statement extends Wrapper , AutoCloseable

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

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

自从:
1.1
参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    static final int
    该常量指示在调用 getMoreResults 时应关闭所有先前保持打开状态的 ResultSet 对象。
    static final int
    指示在调用 getMoreResults 时应关闭当前 ResultSet 对象的常量。
    static final int
    指示执行批处理语句时发生错误的常量。
    static final int
    指示在调用 getMoreResults 时不应关闭当前 ResultSet 对象的常量。
    static final int
    该常量指示生成的密钥不应可用于检索。
    static final int
    指示生成的密钥应可用于检索的常量。
    static final int
    该常量指示批处理语句已成功执行,但没有对其影响的行数的计数可用。
  • 方法总结

    修饰符和类型
    方法
    描述
    void
    将给定的 SQL 命令添加到此 Statement 对象的当前命令列表。
    void
    如果 DBMS 和驱动程序都支持中止 SQL 语句,则取消此 Statement 对象。
    void
    清空此 Statement 对象的当前 SQL 命令列表。
    void
    清除关于此 Statement 对象的所有警告报告。
    void
    立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待它自动关闭时发生这种情况。
    void
    指定此 Statement 将在其所有依赖结果集关闭时关闭。
    default String
    enquoteIdentifier(String identifier, boolean alwaysQuote)
    返回一个 SQL 标识符。
    default String
    返回用单引号括起来的 String
    default String
    返回一个 String 表示用单引号括起来并以大写字母 N 为前缀的国家字符集文字。
    boolean
    执行给定的 SQL 语句,它可能返回多个结果。
    boolean
    execute(String sql, int autoGeneratedKeys)
    执行给定的 SQL 语句,它可能会返回多个结果,并向驱动程序发出信号,告知任何自动生成的键都应可供检索。
    boolean
    execute(String sql, int[] columnIndexes)
    执行给定的 SQL 语句,它可能会返回多个结果,并向驱动程序发出信号,表明给定数组中指示的自动生成的键应该可供检索。
    boolean
    execute(String sql, String[] columnNames)
    执行给定的 SQL 语句,它可能会返回多个结果,并向驱动程序发出信号,表明给定数组中指示的自动生成的键应该可供检索。
    int[]
    向数据库提交一批命令以供执行,如果所有命令都成功执行,则返回一个更新计数数组。
    default long[]
    向数据库提交一批命令以供执行,如果所有命令都成功执行,则返回一个更新计数数组。
    default long
    执行给定的 SQL 语句,它可以是 INSERTUPDATEDELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。
    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 语句并向驱动程序发出信号,表明给定数组中指示的自动生成的键应该可供检索。
    执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
    int
    执行给定的 SQL 语句,它可以是 INSERTUPDATEDELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。
    int
    executeUpdate(String sql, int autoGeneratedKeys)
    执行给定的 SQL 语句并使用给定的标志向驱动程序发出信号,告知驱动程序是否应使此 Statement 对象生成的自动生成的键可用于检索。
    int
    executeUpdate(String sql, int[] columnIndexes)
    执行给定的 SQL 语句并向驱动程序发出信号,表明给定数组中指示的自动生成的键应该可供检索。
    int
    executeUpdate(String sql, String[] columnNames)
    执行给定的 SQL 语句并向驱动程序发出信号,表明给定数组中指示的自动生成的键应该可供检索。
    检索生成此 Statement 对象的 Connection 对象。
    int
    检索从数据库表中获取行的方向,这是从此 Statement 对象生成的结果集的默认方向。
    int
    检索作为从该 Statement 对象生成的 ResultSet 对象的默认提取大小的结果集行数。
    检索因执行此 Statement 对象而创建的任何自动生成的键。
    default long
    检索由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。
    default long
    检索当前结果作为更新计数;如果结果是 ResultSet 对象或没有更多结果,则返回 -1。
    int
    检索可为此 Statement 对象生成的 ResultSet 对象中的字符和二进制列值返回的最大字节数。
    int
    检索由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。
    boolean
    移动到此 Statement 对象的下一个结果,如果它是 ResultSet 对象则返回 true,并隐式关闭使用方法 getResultSet 获得的任何当前 ResultSet 对象。
    boolean
    getMoreResults(int current)
    移动到此 Statement 对象的下一个结果,根据给定标志指定的指令处理任何当前 ResultSet 对象,如果下一个结果是 ResultSet 对象,则返回 true
    int
    检索驱动程序等待 Statement 对象执行的秒数。
    检索当前结果作为 ResultSet 对象。
    int
    检索由此 Statement 对象生成的 ResultSet 对象的结果集并发性。
    int
    检索由此 Statement 对象生成的 ResultSet 对象的结果集可持有性。
    int
    检索由此 Statement 对象生成的 ResultSet 对象的结果集类型。
    int
    检索当前结果作为更新计数;如果结果是 ResultSet 对象或没有更多结果,则返回 -1。
    检索对此 Statement 对象的调用报告的第一个警告。
    boolean
    检索此 Statement 对象是否已关闭。
    boolean
    返回一个值,指示此 Statement 是否将在其所有依赖结果集关闭时关闭。
    boolean
    返回一个值,指示 Statement 是否可池化。
    default boolean
    检索 identifier 是否为简单的 SQL 标识符。
    void
    将 SQL 游标名称设置为给定的 String ,后续 Statement 对象 execute 方法将使用它。
    void
    setEscapeProcessing(boolean enable)
    打开或关闭转义处理。
    void
    setFetchDirection(int direction)
    向驱动程序提供有关在使用此 Statement 对象创建的 ResultSet 对象中处理行的方向的提示。
    void
    setFetchSize(int rows)
    当此 Statement 生成的 ResultSet 对象需要更多行时,向 JDBC 驱动程序提示应从数据库中获取的行数。
    default void
    setLargeMaxRows(long max)
    将此 Statement 对象生成的任何 ResultSet 对象可以包含的最大行数限制设置为给定数。
    void
    setMaxFieldSize(int max)
    设置此 Statement 对象生成的 ResultSet 对象中字符和二进制列值可以返回的最大字节数限制。
    void
    setMaxRows(int max)
    将此 Statement 对象生成的任何 ResultSet 对象可以包含的最大行数限制设置为给定数。
    void
    setPoolable(boolean poolable)
    请求将 Statement 合并或不合并。
    void
    setQueryTimeout(int seconds)
    将驱动程序等待 Statement 对象执行的秒数设置为给定的秒数。

    在接口 java.sql.Wrapper 中声明的方法

    isWrapperFor, unwrap
  • 字段详细信息

    • 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 SQL异常
      执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      参数:
      sql - 要发送到数据库的 SQL 语句,通常是静态 SQL SELECT 语句
      返回:
      一个 ResultSet 对象,包含给定查询产生的数据;从不null
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,给定的 SQL 语句生成除单个 ResultSet 对象以外的任何对象,在 PreparedStatementCallableStatement 上调用该方法
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
    • executeUpdate

      int executeUpdate(String  sql) throws SQL异常
      执行给定的 SQL 语句,它可以是 INSERTUPDATEDELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      参数:
      sql - SQL 数据操作语言 (DML) 语句,例如 INSERTUPDATEDELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。
      返回:
      (1) SQL 数据操作语言 (DML) 语句的行计数或 (2) 0 用于不返回任何内容的 SQL 语句
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,给定的 SQL 语句生成一个 ResultSet 对象,在 PreparedStatementCallableStatement 上调用该方法
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
    • close

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

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

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

      指定者:
      close 在接口 AutoCloseable
      抛出:
      SQLException - 如果发生数据库访问错误
    • getMaxFieldSize

      int getMaxFieldSize() throws SQL异常
      检索可为此 Statement 对象生成的 ResultSet 对象中的字符和二进制列值返回的最大字节数。此限制仅适用于 BINARYVARBINARYLONGVARBINARYCHARVARCHARNCHARNVARCHARLONGNVARCHARLONGVARCHAR 列。如果超出限制,多余的数据将被静默丢弃。
      返回:
      存储字符和二进制值的列的当前列大小限制;零意味着没有限制
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      参见:
    • setMaxFieldSize

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

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

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

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

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

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

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

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

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

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

      Note:Statement 批处理的情况下,实现定义了超时是应用于通过 addBatch 方法添加的单个 SQL 命令还是应用于由 executeBatch 方法调用的整批 SQL 命令(请参阅您的驱动程序供应商文档细节)。

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

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

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

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

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

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

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

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

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

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

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

      ResultSet  getResultSet() throws SQL异常
      检索当前结果作为 ResultSet 对象。每个结果只能调用一次此方法。
      返回:
      当前结果作为 ResultSet 对象或 null 如果结果是更新计数或没有更多结果
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      参见:
    • getUpdateCount

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

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

      当以下情况为真时,没有更多的结果:

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

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

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

      参数:
      direction - 处理行的初始方向
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,或者给定方向不是 ResultSet.FETCH_FORWARDResultSet.FETCH_REVERSEResultSet.FETCH_UNKNOWN 之一
      自从:
      1.2
      参见:
    • getFetchDirection

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

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

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

      int getResultSetConcurrency() throws SQL异常
      检索由此 Statement 对象生成的 ResultSet 对象的结果集并发性。
      返回:
      ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.2
    • getResultSetType

      int getResultSetType() throws SQL异常
      检索由此 Statement 对象生成的 ResultSet 对象的结果集类型。
      返回:
      ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.2
    • addBatch

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      参数:
      sql - 通常这是 SQL INSERTUPDATE 语句
      抛出:
      SQLException - 如果发生数据库访问错误,在关闭的 Statement 上调用此方法,驱动程序不支持批量更新,在 PreparedStatementCallableStatement 上调用该方法
      自从:
      1.2
      参见:
    • clearBatch

      void clearBatch() throws SQL异常
      清空此 Statement 对象的当前 SQL 命令列表。
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法或驱动程序不支持批量更新
      自从:
      1.2
      参见:
    • executeBatch

      int[] executeBatch() throws SQL异常
      向数据库提交一批命令以供执行,如果所有命令都成功执行,则返回一个更新计数数组。返回数组的 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
      参见:
    • getConnection

      Connection  getConnection() throws SQL异常
      检索生成此 Statement 对象的 Connection 对象。
      返回:
      产生该语句的连接
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.2
    • getMoreResults

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

      当以下情况为真时,没有更多的结果:

      
         // stmt is a Statement object
         ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
        
      参数:
      current - 以下 Statement 常量之一,指示使用方法 getResultSet 获得的当前 ResultSet 对象应该发生什么: Statement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULTStatement.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
      参见:
    • getGeneratedKeys

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

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

      返回:
      一个 ResultSet 对象,包含通过执行此 Statement 对象生成的自动生成的密钥
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.4
    • executeUpdate

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      参数:
      sql - SQL 数据操作语言 (DML) 语句,例如 INSERTUPDATEDELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。
      columnNames - 应从插入行返回的列名称数组
      返回:
      INSERTUPDATEDELETE 语句的行计数,或者对于不返回任何内容的 SQL 语句为 0
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,SQL 语句返回一个 ResultSet 对象,提供给此方法的第二个参数不是一个 String 数组,其元素是有效的列名,调用该方法PreparedStatementCallableStatement
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
      自从:
      1.4
    • execute

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      参数:
      sql - 任何 SQL 语句
      autoGeneratedKeys - 一个常量,指示是否应使用方法 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
      参见:
    • execute

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

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

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

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

      int getResultSetHoldability() throws SQL异常
      检索由此 Statement 对象生成的 ResultSet 对象的结果集可持有性。
      返回:
      ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.4
    • isClosed

      boolean isClosed() throws SQL异常
      检索此 Statement 对象是否已关闭。如果 Statement 已调用方法 close 或自动关闭,则 Statement 将关闭。
      返回:
      如果此 Statement 对象已关闭,则为真;如果它仍然打开则为 false
      抛出:
      SQLException - 如果发生数据库访问错误
      自从:
      1.6
    • setPoolable

      void setPoolable(boolean poolable) throws SQL异常
      请求将 Statement 合并或不合并。指定的值是对语句池实现的提示,指示应用程序是否希望语句被池化。是否使用提示取决于语句池管理器。

      语句的可池化值既适用于驱动程序实现的内部语句缓存,也适用于应用服务和其他应用程序实现的外部语句缓存。

      默认情况下,Statement 在创建时不可池化,PreparedStatementCallableStatement 在创建时可池化。

      参数:
      poolable - 如果为真则请求合并语句,如果为假则不合并语句
      抛出:
      SQLException - 如果在关闭的 Statement 上调用此方法
      自从:
      1.6
    • isPoolable

      boolean isPoolable() throws SQL异常
      返回一个值,指示 Statement 是否可池化。
      返回:
      true 如果 Statement 是可合并的; false否则
      抛出:
      SQLException - 如果在关闭的 Statement 上调用此方法
      自从:
      1.6
      参见:
    • closeOnCompletion

      void closeOnCompletion() throws SQL异常
      指定此 Statement 将在其所有依赖结果集关闭时关闭。如果执行 Statement 没有产生任何结果集,则此方法无效。

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

      抛出:
      SQLException - 如果在关闭的 Statement 上调用此方法
      自从:
      1.7
    • isCloseOnCompletion

      boolean isCloseOnCompletion() throws SQL异常
      返回一个值,指示此 Statement 是否将在其所有依赖结果集关闭时关闭。
      返回:
      true 如果 Statement 将在其所有依赖结果集关闭时关闭; false否则
      抛出:
      SQLException - 如果在关闭的 Statement 上调用此方法
      自从:
      1.7
    • getLargeUpdateCount

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

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

      默认实现会抛出 UnsupportedOperationException

      返回:
      当前结果作为更新计数; -1 如果当前结果是一个ResultSet对象或者没有更多结果
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.8
      参见:
    • setLargeMaxRows

      default void setLargeMaxRows(long max) throws SQL异常
      将此 Statement 对象生成的任何 ResultSet 对象可以包含的最大行数限制设置为给定数。如果超过限制,多余的行将被静默删除。

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

      默认实现会抛出 UnsupportedOperationException

      参数:
      max - 新的最大行数限制;零意味着没有限制
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 或不满足条件 max >= 0 时调用此方法
      自从:
      1.8
      参见:
    • getLargeMaxRows

      default long getLargeMaxRows() throws SQL异常
      检索由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。如果超过此限制,多余的行将被静默删除。

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

      默认实现将返回 0

      返回:
      Statement 对象生成的 ResultSet 对象的当前最大行数;零意味着没有限制
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 Statement 上调用此方法
      自从:
      1.8
      参见:
    • executeLargeBatch

      default long[] executeLargeBatch() throws SQL异常
      向数据库提交一批命令以供执行,如果所有命令都成功执行,则返回一个更新计数数组。返回数组的 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
      参见:
    • executeLargeUpdate

      default long executeLargeUpdate(String  sql) throws SQL异常
      执行给定的 SQL 语句,它可以是 INSERTUPDATEDELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      默认实现会抛出 UnsupportedOperationException

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      默认实现会抛出 SQLFeatureNotSupportedException

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      默认实现会抛出 SQLFeatureNotSupportedException

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

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

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

      Note: 无法在 PreparedStatementCallableStatement 上调用此方法。

      默认实现会抛出 SQLFeatureNotSupportedException

      参数:
      sql - SQL 数据操作语言 (DML) 语句,例如 INSERTUPDATEDELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。
      columnNames - 应从插入行返回的列名称数组
      返回:
      INSERTUPDATEDELETE 语句的行计数,或者对于不返回任何内容的 SQL 语句为 0
      抛出:
      SQLException - 如果发生数据库访问错误,则在关闭的 Statement 上调用此方法,SQL 语句返回一个 ResultSet 对象,提供给此方法的第二个参数不是一个 String 数组,其元素是有效的列名,调用该方法PreparedStatementCallableStatement
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
      自从:
      1.8
    • enquoteLiteral

      default String  enquoteLiteral(String  val) throws SQL异常
      返回用单引号括起来的 String。字符串中出现的任何单引号都将替换为两个单引号。
      转换示例:
      Value Result
      你好 '你好'
      你好 'G''日'
      'G''日' '''G''''日'''
      I'''M 'I''''''M'
      实现注意事项:
      JDBC 驱动程序实现可能需要提供他们自己的此方法的实现,以满足底层数据源的要求。
      参数:
      val - 一个字符串
      返回:
      由单引号括起来的字符串,每个单引号转换为两个单引号
      抛出:
      NullPointerException - 如果 val 是 null
      SQLException - 如果发生数据库访问错误
      自从:
      9
    • enquoteIdentifier

      default String  enquoteIdentifier(String  identifier, boolean alwaysQuote) throws SQL异常
      返回一个 SQL 标识符。如果 identifier 是一个简单的 SQL 标识符:
      • 如果 alwaysQuotefalse 则返回原始值
      • 如果 alwaysQuotetrue,则返回分隔标识符
      如果 identifier 不是简单的 SQL 标识符,则 identifier 不存在时将用双引号引起来。如果数据源不支持分隔标识符的双引号,则标识符应包含在从 DatabaseMetaData.getIdentifierQuoteString() 返回的字符串中。如果数据源不支持定界标识符,则应抛出 SQLFeatureNotSupportedException

      如果 identifier 包含分隔标识符中的任何无效字符或标识符长度对于数据源无效,则将抛出 SQLException

      实现要求:
      默认实现使用以下条件来确定有效的简单 SQL 标识符:
      • 该字符串未包含在双引号中
      • 第一个字符是从 a 到 z 或从 A 到 Z 的字母字符
      • 名称仅包含字母数字字符或字符“_”
      如果出现以下情况,默认实现将抛出 SQLException
      • identifier 包含一个 null 字符或双引号,不是简单的 SQL 标识符。
      • identifier 的长度小于 1 或大于 128 个字符
      转换示例:
      标识符 总是引用 Result
      你好 false 你好
      你好 true "Hello"
      你好 false “你好”
      “布鲁斯·韦恩” false “布鲁斯·韦恩”
      “布鲁斯·韦恩” true “布鲁斯·韦恩”
      GoodDay$ false “美好的一天$”
      你好世界 false SQL异常
      “你好世界” false SQL异常
      实现注意事项:
      JDBC 驱动程序实现可能需要提供他们自己的此方法的实现,以满足底层数据源的要求。
      参数:
      identifier - SQL 标识符
      alwaysQuote - 指示是否应将简单的 SQL 标识符作为带引号的标识符返回
      返回:
      一个简单的 SQL 标识符或分隔标识符
      抛出:
      SQLException - 如果标识符不是有效标识符
      SQLFeatureNotSupportedException - 如果数据源不支持定界标识符
      NullPointerException - 如果标识符是 null
      自从:
      9
    • isSimpleIdentifier

      default boolean isSimpleIdentifier(String  identifier) throws SQL异常
      检索 identifier 是否为简单的 SQL 标识符。
      实现要求:
      默认实现使用以下条件来确定有效的简单 SQL 标识符:
      • 该字符串未包含在双引号中
      • 第一个字符是从 a 到 z 或从 A 到 Z 的字母字符
      • 该字符串仅包含字母数字字符或字符“_”
      • 该字符串的长度介于 1 到 128 个字符之间(含)
      转换示例:
      标识符 简单标识符
      你好 true
      你好 false
      “布鲁斯·韦恩” false
      GoodDay$ false
      你好世界 false
      “你好世界” false
      实现注意事项:
      JDBC 驱动程序实现可能需要提供他们自己的此方法的实现,以满足底层数据源的要求。
      参数:
      identifier - SQL 标识符
      返回:
      如果是简单的 SQL 标识符,则为 true,否则为 false
      抛出:
      NullPointerException - 如果标识符是 null
      SQLException - 如果发生数据库访问错误
      自从:
      9
    • enquoteNCharLiteral

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