Module java.sql
Package java.sql

Interface Statement

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

public interface Statement extends Wrapper, AutoCloseable

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

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

自版本:
1.1
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    表示应关闭先前保持打开的所有ResultSet对象的常量,当调用getMoreResults时。
    static final int
    表示在调用getMoreResults时应关闭当前ResultSet对象的常量。
    static final int
    表示执行批处理语句时发生错误的常量。
    static final int
    表示在调用getMoreResults时不应关闭当前ResultSet对象的常量。
    static final int
    表示不应使生成的键可用于检索的常量。
    static final int
    表示应使生成的键可用于检索的常量。
    static final int
    表示批处理语句成功执行但无法获得受影响行数计数的常量。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    将给定的SQL命令添加到此Statement对象的当前命令列表中。
    void
    cancel()
    如果DBMS和驱动程序支持中止SQL语句,则取消此Statement对象。
    void
    清空此Statement对象当前的SQL命令列表。
    void
    清除此Statement对象上报告的所有警告。
    void
    close()
    立即释放此Statement对象的数据库和JDBC资源,而不是等待自动关闭时才释放。
    void
    指定当所有依赖的结果集关闭时,此Statement将被关闭。
    default String
    enquoteIdentifier(String identifier, boolean alwaysQuote)
    返回SQL标识符。
    default String
    返回用单引号括起来的String
    default String
    返回用单引号括起来的表示国家字符集文字的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[]
    将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。
    default long[]
    将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。
    default long
    执行给定的SQL语句,可能是INSERTUPDATEDELETE语句,或者是返回空值的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 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对象,并返回true如果下一个结果是ResultSet对象。
    int
    检索驱动程序等待Statement对象执行的秒数。
    将当前结果作为ResultSet对象检索。
    int
    检索由此Statement对象生成的ResultSet对象的结果集并发性。
    int
    检索由此Statement对象生成的ResultSet对象的结果集可保持性。
    int
    检索由此Statement对象生成的ResultSet对象的结果集类型。
    int
    将当前结果作为更新计数检索;如果结果是ResultSet对象或没有更多结果,则返回-1。
    检索此Statement对象上报告的第一个警告。
    boolean
    检索此Statement对象是否已关闭。
    boolean
    返回一个值,指示当所有依赖的结果集关闭时,此Statement是否将被关闭。
    boolean
    返回一个值,指示Statement是否可池化。
    default boolean
    isSimpleIdentifier(String identifier)
    检索identifier是否为简单SQL标识符。
    void
    将SQL游标名称设置为给定的String,将由后续Statement对象execute方法使用。
    void
    setEscapeProcessing(boolean enable)
    打开或关闭转义处理。
    void
    setFetchDirection(int direction)
    向驱动程序提供有关在使用此Statement对象创建的ResultSet对象中处理行的方向的提示。
    void
    setFetchSize(int rows)
    向JDBC驱动程序提供有关当需要更多行时应从数据库获取的行数的提示,用于由此Statement生成的ResultSet对象。
    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对象执行的秒数设置为给定秒数。

    Methods declared in interface java.sql.Wrapper

    isWrapperFor, unwrap
  • Field Details

    • 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
      参见:
  • Method Details

    • executeQuery

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

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

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

      int executeUpdate(String sql) throws SQLException
      执行给定的SQL语句,可能是一个INSERTUPDATEDELETE语句,或者返回空值的SQL语句,例如SQL DDL语句。

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

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

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

      对已关闭的Statement对象调用close方法没有任何效果。

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

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

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

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

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

      void setMaxRows(int max) throws SQLException
      将由此Statement对象生成的任何ResultSet对象的最大行数限制设置为给定的数字。如果超过限制,多余的行将被静默丢弃。
      参数:
      max - 新的最大行数限制;零表示没有限制
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用,或者条件max >= 0不满足
      参见:
    • setEscapeProcessing

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

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

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

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

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

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

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

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

      参数:
      seconds - 以秒为单位的新查询超时限制;零表示没有限制
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用或条件seconds >= 0不满足
      参见:
    • 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对象中的当前行。如果数据库不支持定位更新/删除,此方法将不执行任何操作。为确保游标具有支持更新的适当隔离级别,游标的SELECT语句应具有形式SELECT FOR UPDATE。如果没有FOR UPDATE,定位更新可能失败。

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

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

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

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

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

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

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

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

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

      当以下条件为真时,没有更多结果:

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

      void setFetchDirection(int direction) throws SQLException
      ResultSet对象设置从数据库表中提取行的方向的提示,该提示是从此Statement对象生成的结果集的默认值。默认值为ResultSet.FETCH_FORWARD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      返回:
      包含批处理中每个命令的一个元素的更新计数数组。数组的元素按照添加到批处理中的命令的顺序进行排序。
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用或驱动程序不支持批量语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateExceptionSQLException的子类)。
      SQLTimeoutException - 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement
      自1.2版本起:
      1.2
      另请参阅:
    • getConnection

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

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

      当以下条件为真时,没有更多的结果:

      
           // stmt是一个Statement对象
           ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
       
      参数:
      current - 表示应如何处理使用方法getResultSet获取的当前ResultSet对象的以下Statement常量之一:Statement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS
      返回:
      如果下一个结果是ResultSet对象,则返回true;如果是更新计数或没有更多结果,则返回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版本起:
      1.4
      另请参阅:
    • 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语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。

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

      参数:
      sql - SQL数据操作语言(DML)语句,如INSERTUPDATEDELETE;或者返回空值的SQL语句,如DDL语句。
      autoGeneratedKeys - 一个指示是否应该使自动生成的键可用于检索的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
      返回:
      要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的SQL语句返回一个ResultSet对象,给定的常量不是允许的常量之一,该方法在PreparedStatementCallableStatement上调用
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      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 - 一个列索引数组,指示应该从插入行返回的列
      返回:
      要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用,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 - 一个包含应该从插入行返回的列名称的数组
      返回:
      要么是INSERTUPDATEDELETE语句的行数,要么是返回空值的SQL语句的0
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用,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方法使自动生成的键可用于检索;以下常量之一:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS
      返回:
      如果第一个结果是ResultSet对象,则为true;如果是更新计数或没有结果,则为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 SQLException
      执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的索引。如果SQL语句不是INSERT语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      参数:
      poolable - 如果为true,则请求将语句池化,如果为false,则请求不将语句池化
      抛出:
      SQLException - 如果此方法在关闭的Statement上调用
      自:
      1.6
    • isPoolable

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

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

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

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

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

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

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

      默认实现将抛出UnsupportedOperationException

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

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

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

      默认实现将抛出UnsupportedOperationException

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

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

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

      默认实现将返回0

      返回:
      由此Statement对象生成的ResultSet对象的当前最大行数;零表示没有限制
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的Statement上调用此方法
      自:
      1.8
      参见:
    • 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上调用,或驱动程序不支持批处理语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateExceptionSQLException的子类)。
      SQLTimeoutException - 当驱动程序确定由setQueryTimeout方法指定的超时值已超过并且至少尝试取消当前运行的Statement
      自:
      1.8
      参见:
    • executeLargeUpdate

      default long executeLargeUpdate(String sql) throws SQLException
      执行给定的SQL语句,可以是INSERTUPDATEDELETE语句,或者返回空值的SQL语句,例如SQL DDL语句。

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

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

      默认实现将抛出UnsupportedOperationException

      参数:
      sql - SQL数据操作语言(DML)语句,如INSERTUPDATEDELETE;或返回空值的SQL语句,如DDL语句。
      返回:
      (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
      抛出:
      SQLException - 如果发生数据库访问错误,此方法在关闭的Statement上调用,给定的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) 对于不返回任何内容的SQL语句为0
      抛出:
      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 SQLException
      执行给定的SQL语句,并向驱动程序指示应该为检索提供的自动生成键。此数组包含目标表中包含应该提供的自动生成键的列的索引。如果SQL语句不是INSERT语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。

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

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

      默认实现将抛出SQLFeatureNotSupportedException

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

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

      default String enquoteIdentifier(String identifier, boolean alwaysQuote) throws SQLException
      返回一个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个字符
      转换示例:
      标识符 alwaysQuote 结果
      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
      实现注意:
      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个字符之间,包括边界值
      转换示例:
      标识符 简单标识符
      Hello true
      G'Day false
      "Bruce Wayne" false
      GoodDay$ false
      Hello"World false
      "Hello"World" false
      实现注意:
      JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
      参数:
      identifier - 一个SQL标识符
      返回:
      如果是简单的SQL标识符,则返回true,否则返回false
      抛出:
      NullPointerException - 如果标识符为null
      SQLException - 如果发生数据库访问错误
      自版本:
      9
    • enquoteNCharLiteral

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