- 所有超级接口:
-
AutoCloseable
,Wrapper
- 所有已知子接口:
-
CallableStatement
,PreparedStatement
用于执行静态SQL语句并返回其生成结果的对象。
默认情况下,每个Statement
对象只能同时打开一个ResultSet
对象。因此,如果一个ResultSet
对象的读取与另一个的读取交错进行,则每个必须由不同的Statement
对象生成。 Statement
接口中的所有执行方法在存在打开的ResultSet
对象时会隐式关闭该语句的当前ResultSet
对象。
- 自版本:
- 1.1
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic 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 TypeMethodDescriptionvoid
将给定的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
enquoteLiteral
(String val) 返回用单引号括起来的String
。default String
返回用单引号括起来的表示国家字符集文字的String
,并以大写字母N为前缀。boolean
执行给定的SQL语句,可能返回多个结果。boolean
执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使任何自动生成的键可用于检索。boolean
执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。boolean
执行给定的SQL语句,可能返回多个结果,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。int[]
将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。default long[]
将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回更新计数的数组。default long
executeLargeUpdate
(String sql) 执行给定的SQL语句,可能是INSERT
、UPDATE
或DELETE
语句,或者是返回空值的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语句,并通知驱动程序应使给定数组中指示的自动生成的键可用于检索。executeQuery
(String sql) 执行给定的SQL语句,返回单个ResultSet
对象。int
executeUpdate
(String sql) 执行给定的SQL语句,可能是INSERT
、UPDATE
或DELETE
语句,或者是返回空值的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
isClosed()
检索此Statement
对象是否已关闭。boolean
返回一个值,指示当所有依赖的结果集关闭时,此Statement
是否将被关闭。boolean
返回一个值,指示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驱动程序提供有关当需要更多行时应从数据库获取的行数的提示,用于由此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
执行给定的SQL语句,返回一个单个ResultSet
对象。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- 要发送到数据库的SQL语句,通常是静态SQLSELECT
语句 - 返回:
-
包含给定查询产生的数据的
ResultSet
对象;永不为null
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,给定的SQL语句产生除单个ResultSet
对象之外的任何内容,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLTimeoutException
- 当驱动程序确定已超过setQueryTimeout
方法指定的超时值并且至少尝试取消当前正在运行的Statement
时
-
executeUpdate
执行给定的SQL语句,可能是一个INSERT
、UPDATE
或DELETE
语句,或者返回空值的SQL语句,例如SQL DDL语句。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
、UPDATE
或DELETE
;或者返回空值的SQL语句,如DDL语句。 - 返回:
- (1) SQL数据操作语言(DML)语句的行数,或者(2) 对于返回空值的SQL语句为0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,给定的SQL语句产生ResultSet
对象,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLTimeoutException
- 当驱动程序确定已超过setQueryTimeout
方法指定的超时值并且至少尝试取消当前正在运行的Statement
时
-
close
立即释放此Statement
对象的数据库和JDBC资源,而不是等待自动关闭时才释放。通常最好在完成后立即释放资源,以避免占用数据库资源。对已关闭的
Statement
对象调用close
方法没有任何效果。注意:当
Statement
对象关闭时,如果存在当前的ResultSet
对象,则也将关闭。- 指定者:
-
close
在接口AutoCloseable
中 - 抛出:
-
SQLException
- 如果发生数据库访问错误
-
getMaxFieldSize
检索由此Statement
对象生成的ResultSet
对象中字符和二进制列值可以返回的最大字节数。此限制仅适用于BINARY
、VARBINARY
、LONGVARBINARY
、CHAR
、VARCHAR
、NCHAR
、NVARCHAR
、LONGNVARCHAR
和LONGVARCHAR
列。如果超过限制,多余的数据将被静默丢弃。- 返回:
- 存储字符和二进制值的列的当前列大小限制;零表示没有限制
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
setMaxFieldSize
设置由此Statement
对象生成的ResultSet
对象中字符和二进制列值可以返回的最大字节数的限制。此限制仅适用于BINARY
、VARBINARY
、LONGVARBINARY
、CHAR
、VARCHAR
、NCHAR
、NVARCHAR
、LONGNVARCHAR
和LONGVARCHAR
字段。如果超过限制,多余的数据将被静默丢弃。为了最大可移植性,使用大于256的值。- 参数:
-
max
- 新的字节列大小限制;零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,或者条件max >= 0
不满足 - 参见:
-
getMaxRows
检索由此Statement
对象生成的ResultSet
对象可以包含的最大行数。如果超过此限制,多余的行将被静默丢弃。- 返回:
-
由此
Statement
对象生成的ResultSet
对象的当前最大行数;零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
setMaxRows
将由此Statement
对象生成的任何ResultSet
对象的最大行数限制设置为给定的数字。如果超过限制,多余的行将被静默丢弃。- 参数:
-
max
- 新的最大行数限制;零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,或者条件max >= 0
不满足 - 参见:
-
setEscapeProcessing
打开或关闭转义处理。如果启用转义扫描(默认情况下),驱动程序将在将SQL语句发送到数据库之前执行转义替换。Connection
和DataSource
属性escapeProcessing
可用于更改默认的转义处理行为。值为true(默认值)会为所有Statement
对象启用转义处理。值为false会为所有Statement
对象禁用转义处理。可以使用setEscapeProcessing
方法为单个Statement
对象指定转义处理行为。注意: 由于通常在进行此调用之前已解析准备好的语句,因此禁用
PreparedStatements
对象的转义处理将不会产生任何效果。- 参数:
-
enable
-true
表示启用转义处理;false
表示禁用 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法
-
getQueryTimeout
检索驱动程序将等待Statement
对象执行的秒数。如果超过限制,将抛出SQLException
。- 返回:
- 当前查询超时限制(以秒为单位);零表示没有限制
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
setQueryTimeout
设置驱动程序等待Statement
对象执行的秒数为给定的秒数。默认情况下,运行语句完成的时间没有限制。如果超过限制,将抛出SQLTimeoutException
。JDBC驱动程序必须将此限制应用于execute
、executeQuery
和executeUpdate
方法。注意: JDBC驱动程序实现也可能将此限制应用于
ResultSet
方法(请参阅您的驱动程序供应商文档以获取详细信息)。注意: 在
Statement
批处理的情况下,是实现定义的,超时是应用于通过addBatch
方法添加的单个SQL命令还是应用于executeBatch
方法调用的整个SQL命令批处理(请参阅您的驱动程序供应商文档以获取详细信息)。- 参数:
-
seconds
- 以秒为单位的新查询超时限制;零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或条件seconds >= 0
不满足 - 参见:
-
cancel
如果DBMS和驱动程序支持中止SQL语句,则取消此Statement
对象。此方法可由一个线程用于取消另一个线程正在执行的语句。- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
-
getWarnings
检索由此Statement
对象调用报告的第一个警告。随后的Statement
对象警告将链接到此SQLWarning
对象。每次语句(重新)执行时,警告链都会自动清除。不应在关闭的
Statement
对象上调用此方法;这样做将导致抛出SQLException
。注意: 如果正在处理
ResultSet
对象,与该ResultSet
对象上的读取相关的任何警告将链接到该对象,而不是生成它的Statement
对象。- 返回:
-
第一个
SQLWarning
对象或null
(如果没有警告) - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法
-
clearWarnings
清除此Statement
对象上报告的所有警告。调用此方法后,方法getWarnings
将返回null
,直到为此Statement
对象报告新警告。- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法
-
setCursorName
将SQL游标名称设置为给定的String
,随后将由Statement
对象execute
方法使用。然后可以在SQL定位更新或删除语句中使用此名称,以标识由该语句生成的ResultSet
对象中的当前行。如果数据库不支持定位更新/删除,此方法将不执行任何操作。为确保游标具有支持更新的适当隔离级别,游标的SELECT
语句应具有形式SELECT FOR UPDATE
。如果没有FOR UPDATE
,定位更新可能失败。注意: 根据定义,定位更新和删除的执行必须由与生成用于定位的
ResultSet
对象的Statement
对象不同的Statement
对象执行。此外,游标名称必须在连接内是唯一的。- 参数:
-
name
- 新游标名称,必须在连接内是唯一的 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法
-
execute
执行给定的SQL语句,可能返回多个结果。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。execute
方法执行SQL语句并指示第一个结果的形式。然后必须使用getResultSet
或getUpdateCount
方法检索结果,并使用getMoreResults
移动到任何后续结果。注意: 不能在
PreparedStatement
或CallableStatement
上调用此方法。- 参数:
-
sql
- 任何SQL语句 - 返回:
-
如果第一个结果是
ResultSet
对象,则为true
;如果是更新计数或没有结果,则为false
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLTimeoutException
- 当驱动程序确定已超过由setQueryTimeout
方法指定的超时值并且至少尝试取消当前运行的Statement
时 - 参见:
-
getResultSet
将当前结果检索为ResultSet
对象。每个结果只能调用一次此方法。- 返回:
-
当前结果作为
ResultSet
对象,如果结果是更新计数或没有更多结果,则为null
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
getUpdateCount
将当前结果检索为更新计数;如果结果是ResultSet
对象或没有更多结果,则返回-1。每个结果只能调用一次此方法。- 返回:
-
当前结果作为更新计数;如果当前结果是
ResultSet
对象或没有更多结果,则为-1 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
getMoreResults
移动到此Statement
对象的下一个结果,如果是ResultSet
对象,则返回true
,并隐式关闭使用getResultSet
方法获取的任何当前ResultSet
对象。当以下条件为真时,没有更多结果:
// stmt is a Statement object ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
- 返回:
-
如果下一个结果是
ResultSet
对象,则为true
;如果是更新计数或没有更多结果,则为false
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 参见:
-
setFetchDirection
为ResultSet
对象设置从数据库表中提取行的方向的提示,该提示是从此Statement
对象生成的结果集的默认值。默认值为ResultSet.FETCH_FORWARD
。请注意,此方法设置由此
Statement
对象生成的结果集的默认提取方向。每个结果集都有其自己的方法来获取和设置其自己的提取方向。- 参数:
-
direction
- 处理行的初始方向 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或给定的方向不是ResultSet.FETCH_FORWARD
、ResultSet.FETCH_REVERSE
或ResultSet.FETCH_UNKNOWN
之一 - 自:
- 1.2
- 参见:
-
getFetchDirection
检索从此Statement
对象生成的结果集的默认提取方向。如果此Statement
对象未通过调用方法setFetchDirection
设置提取方向,则返回值是特定于实现的。- 返回:
-
从此
Statement
对象生成的结果集的默认提取方向 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自1.2版本起:
- 1.2
- 另请参阅:
-
setFetchSize
给JDBC驱动程序一个提示,指示在需要更多行以生成由此Statement
对象生成的ResultSet
对象时应从数据库中提取的行数。如果指定的值为零,则忽略提示。默认值为零。- 参数:
-
rows
- 要提取的行数 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,或者条件rows >= 0
不满足。 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getFetchSize
检索从此Statement
对象生成的ResultSet
对象的默认提取大小的结果集行数。如果此Statement
对象未通过调用setFetchSize
方法设置提取大小,则返回值是特定于实现的。- 返回:
-
从此
Statement
对象生成的结果集的默认提取大小 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getResultSetConcurrency
检索由此Statement
对象生成的ResultSet
对象的结果集并发性。- 返回:
-
ResultSet.CONCUR_READ_ONLY
或ResultSet.CONCUR_UPDATABLE
之一 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自1.2版本起:
- 1.2
-
getResultSetType
检索由此Statement
对象生成的ResultSet
对象的结果集类型。- 返回:
-
ResultSet.TYPE_FORWARD_ONLY
、ResultSet.TYPE_SCROLL_INSENSITIVE
或ResultSet.TYPE_SCROLL_SENSITIVE
之一 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自1.2版本起:
- 1.2
-
addBatch
将给定的SQL命令添加到此Statement
对象的当前命令列表中。通过调用方法executeBatch
,可以执行此列表中的命令作为批处理。注意:无法在
PreparedStatement
或CallableStatement
上调用此方法。- 参数:
-
sql
- 通常是SQLINSERT
或UPDATE
语句 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,驱动程序不支持批量更新,该方法在PreparedStatement
或CallableStatement
上调用 - 自1.2版本起:
- 1.2
- 另请参阅:
-
clearBatch
清空此Statement
对象的当前SQL命令列表。- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或驱动程序不支持批量更新 - 自1.2版本起:
- 1.2
- 另请参阅:
-
executeBatch
将一批命令提交到数据库进行执行,如果所有命令成功执行,则返回一个更新计数数组。返回的数组的int
元素按照批处理中添加命令的顺序进行排序。方法executeBatch
返回的数组中的元素可能是以下之一:- 大于或等于零的数字--表示命令已成功处理,并且是一个更新计数,给出了受命令执行影响的数据库中的行数
- 值为
SUCCESS_NO_INFO
--表示命令已成功处理,但受影响的行数未知如果批量更新中的某个命令未能正确执行,此方法将抛出
BatchUpdateException
,JDBC驱动程序可能会或可能不会继续处理批处理中的其余命令。但是,驱动程序的行为必须与特定DBMS一致,即始终继续处理命令或永远不继续处理命令。如果驱动程序在失败后继续处理,方法BatchUpdateException.getUpdateCounts
返回的数组将包含与批处理中的命令数量相同的元素,至少其中一个元素将是以下之一: - 值为
EXECUTE_FAILED
--表示命令未能成功执行,仅在驱动程序在命令失败后继续处理命令时发生
为了适应在抛出
BatchUpdateException
对象后继续处理批量更新命令的选项,Java 2 SDK标准版1.3中的可能实现和返回值已进行了修改。- 返回:
- 包含批处理中每个命令的一个元素的更新计数数组。数组的元素按照添加到批处理中的命令的顺序进行排序。
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或驱动程序不支持批量语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateException
(SQLException
的子类)。 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自1.2版本起:
- 1.2
- 另请参阅:
-
getConnection
检索生成此Statement
对象的Connection
对象。- 返回:
- 生成此语句的连接
- 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自1.2版本起:
- 1.2
-
getMoreResults
移动到此Statement
对象的下一个结果,根据给定标志指定的指令处理任何当前ResultSet
对象,并在下一个结果是ResultSet
对象时返回true
。当以下条件为真时,没有更多的结果:
// stmt是一个Statement对象 ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
- 参数:
-
current
- 表示应如何处理使用方法getResultSet
获取的当前ResultSet
对象的以下Statement
常量之一:Statement.CLOSE_CURRENT_RESULT
、Statement.KEEP_CURRENT_RESULT
或Statement.CLOSE_ALL_RESULTS
- 返回:
-
如果下一个结果是
ResultSet
对象,则返回true
;如果是更新计数或没有更多结果,则返回false
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或提供的参数不是以下之一:Statement.CLOSE_CURRENT_RESULT
、Statement.KEEP_CURRENT_RESULT
或Statement.CLOSE_ALL_RESULTS
-
SQLFeatureNotSupportedException
- 如果DatabaseMetaData.supportsMultipleOpenResults
返回false
,并且提供了Statement.KEEP_CURRENT_RESULT
或Statement.CLOSE_ALL_RESULTS
作为参数 - 自1.4版本起:
- 1.4
- 另请参阅:
-
getGeneratedKeys
检索由于执行此Statement
对象而创建的任何自动生成的键。如果此Statement
对象未生成任何键,则返回一个空的ResultSet
对象。注意:如果未指定表示自动生成键的列,则JDBC驱动程序实现将确定最能代表自动生成键的列。
- 返回:
-
一个
ResultSet
对象,其中包含由此Statement
对象执行生成的自动生成的键 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并使用给定的标志向驱动程序发出信号,指示是否应该使此Statement
对象生成的自动生成的键可用于检索。如果SQL语句不是INSERT
语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
,UPDATE
或DELETE
;或者返回空值的SQL语句,如DDL语句。 -
autoGeneratedKeys
- 一个指示是否应该使自动生成的键可用于检索的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS
Statement.NO_GENERATED_KEYS
- 返回:
- 要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,给定的SQL语句返回一个ResultSet
对象,给定的常量不是允许的常量之一,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的索引。如果SQL语句不是INSERT
语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
,UPDATE
或DELETE
;或者返回空值的SQL语句,如DDL语句。 -
columnIndexes
- 一个列索引数组,指示应该从插入行返回的列 - 返回:
- 要么是SQL数据操作语言(DML)语句的行数,要么是返回空值的SQL语句的0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,SQL语句返回一个ResultSet
对象,此方法提供的第二个参数不是有效列索引的int
数组,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自从:
- 1.4
-
executeUpdate
执行给定的SQL语句,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的名称。如果SQL语句不是INSERT
语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
,UPDATE
或DELETE
;或者返回空值的SQL语句,如DDL语句。 -
columnNames
- 一个包含应该从插入行返回的列名称的数组 - 返回:
-
要么是
INSERT
,UPDATE
或DELETE
语句的行数,要么是返回空值的SQL语句的0 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,SQL语句返回一个ResultSet
对象,此方法提供的第二个参数不是有效列名称的String
数组,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自从:
- 1.4
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示任何自动生成的键应该可用于检索。如果SQL语句不是INSERT
语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略此信号。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。
execute
方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet
或getUpdateCount
方法检索结果,并使用getMoreResults
移动到任何后续结果。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- 任何SQL语句 -
autoGeneratedKeys
- 一个常量,指示是否应该使用getGeneratedKeys
方法使自动生成的键可用于检索;以下常量之一:Statement.RETURN_GENERATED_KEYS
或Statement.NO_GENERATED_KEYS
- 返回:
-
如果第一个结果是
ResultSet
对象,则为true
;如果是更新计数或没有结果,则为false
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,此方法提供的第二个参数不是Statement.RETURN_GENERATED_KEYS
或Statement.NO_GENERATED_KEYS
,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持具有常量Statement.RETURN_GENERATED_KEYS
的此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自从:
- 1.4
- 参见:
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示应该使给定数组中指示的自动生成的键可用于检索。此数组包含目标表中包含应该可用的自动生成的键的列的索引。如果SQL语句不是INSERT
语句,或者是能够返回自动生成的键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常情况下,您可以忽略这一点,除非您正在(1)执行可能返回多个结果的存储过程,或者(2)动态执行未知的SQL字符串。
execute
方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet
或getUpdateCount
方法检索结果,并使用getMoreResults
移动到任何后续结果。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- 任何SQL语句 -
columnIndexes
- 插入行中应该可通过调用getGeneratedKeys
方法检索的列的索引数组 - 返回:
-
如果第一个结果是
ResultSet
对象,则返回true
; 如果是更新计数或没有结果,则返回false
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,传递给此方法的int
数组中的元素不是有效的列索引,此方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定已超过setQueryTimeout
方法指定的超时值并且至少尝试取消当前运行的Statement
时 - 自:
- 1.4
- 参见:
-
execute
执行给定的SQL语句,该语句可能返回多个结果,并通知驱动程序应该使给定数组中指示的自动生成键可供检索。此数组包含目标表中包含应该可用的自动生成键的列的名称。如果SQL语句不是INSERT
语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。在某些(不常见的)情况下,单个SQL语句可能返回多个结果集和/或更新计数。通常,除非您正在执行可能返回多个结果的存储过程,或者您正在动态执行未知的SQL字符串,否则您可以忽略此情况。
execute
方法执行SQL语句并指示第一个结果的形式。然后,您必须使用getResultSet
或getUpdateCount
方法检索结果,并使用getMoreResults
移动到任何后续结果。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。- 参数:
-
sql
- 任何SQL语句 -
columnNames
- 插入行中应该可通过调用getGeneratedKeys
方法检索的列的名称数组 - 返回:
-
如果下一个结果是
ResultSet
对象,则返回true
; 如果是更新计数或没有更多结果,则返回false
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,传递给此方法的String
数组中的元素不是有效的列名称,此方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定已超过setQueryTimeout
方法指定的超时值并且至少尝试取消当前运行的Statement
时 - 自:
- 1.4
- 参见:
-
getResultSetHoldability
检索由此Statement
对象生成的ResultSet
对象的结果集可保持性。- 返回:
-
ResultSet.HOLD_CURSORS_OVER_COMMIT
或ResultSet.CLOSE_CURSORS_AT_COMMIT
- 抛出:
-
SQLException
- 如果发生数据库访问错误或此方法在关闭的Statement
上调用 - 自:
- 1.4
-
isClosed
检索此Statement
对象是否已关闭。如果方法close已在其上调用,则Statement
已关闭,或者它被自动关闭。- 返回:
-
如果此
Statement
对象已关闭,则返回true; 如果仍然打开,则返回false - 抛出:
-
SQLException
- 如果发生数据库访问错误 - 自:
- 1.6
-
setPoolable
请求将Statement
池化或不池化。指定的值是对语句池实现的提示,指示应用程序是否希望将语句池化。语句池管理器是否使用提示取决于语句池管理器。语句的可池化值适用于驱动程序实现的内部语句缓存以及应用程序服务器和其他应用程序实现的外部语句缓存。
默认情况下,创建时
Statement
不可池化,创建PreparedStatement
和CallableStatement
时可池化。- 参数:
-
poolable
- 如果为true,则请求将语句池化,如果为false,则请求不将语句池化 - 抛出:
-
SQLException
- 如果此方法在关闭的Statement
上调用 - 自:
- 1.6
-
isPoolable
返回一个值,指示Statement
是否可池化。- 返回:
-
如果
Statement
可池化,则返回true
; 否则返回false
- 抛出:
-
SQLException
- 如果此方法在关闭的Statement
上调用 - 自:
- 1.6
- 参见:
-
closeOnCompletion
指定当所有其依赖结果集关闭时,将关闭此Statement
。如果Statement
的执行不产生任何结果集,则此方法无效。注意:多次调用
closeOnCompletion
不会切换此Statement
上的效果。但是,对closeOnCompletion
的调用会影响随后执行的语句以及当前具有打开的依赖结果集的语句。- 抛出:
-
SQLException
- 如果此方法在关闭的Statement
上调用 - 自:
- 1.7
-
isCloseOnCompletion
返回一个值,指示当所有其依赖结果集关闭时,此Statement
是否将被关闭。- 返回:
-
如果所有依赖结果集关闭时此
Statement
将被关闭,则返回true
; 否则返回false
- 抛出:
-
SQLException
- 如果此方法在关闭的Statement
上调用 - 自:
- 1.7
-
getLargeUpdateCount
将当前结果检索为更新计数; 如果结果是ResultSet
对象或没有更多结果,则返回-1。每个结果只应调用一次此方法。当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。默认实现将抛出
UnsupportedOperationException
- 返回:
-
将当前结果作为更新计数; 如果当前结果是
ResultSet
对象或没有更多结果,则返回-1 - 抛出:
-
SQLException
- 如果发生数据库访问错误或此方法在关闭的Statement
上调用 - 自:
- 1.8
- 参见:
-
setLargeMaxRows
设置由此Statement
对象生成的任何ResultSet
对象可以包含的最大行数限制为给定数字。如果超过限制,则多余的行将被静默丢弃。当行限制可能超过
Integer.MAX_VALUE
时,应使用此方法。默认实现将抛出
UnsupportedOperationException
- 参数:
-
max
- 新的最大行限制; 零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用或条件max >= 0
不满足 - 自:
- 1.8
- 参见:
-
getLargeMaxRows
检索由此Statement
对象生成的ResultSet
对象可以包含的最大行数。如果超过此限制,则多余的行将被静默丢弃。当返回的行限制可能超过
Integer.MAX_VALUE
时,应使用此方法。默认实现将返回
0
- 返回:
-
由此
Statement
对象生成的ResultSet
对象的当前最大行数;零表示没有限制 - 抛出:
-
SQLException
- 如果发生数据库访问错误或在关闭的Statement
上调用此方法 - 自:
- 1.8
- 参见:
-
executeLargeBatch
将一批命令提交到数据库进行执行,如果所有命令都成功执行,则返回一个更新计数数组。返回的数组中的long
元素按照批处理中添加命令的顺序进行排序。方法executeLargeBatch
返回的数组元素可能是以下之一:- 大于或等于零的数字 - 表示命令成功处理并且是一个更新计数,给出了数据库中受命令执行影响的行数
- 值为
SUCCESS_NO_INFO
- 表示命令成功处理,但受影响的行数未知如果批处理中的某个命令未能正确执行,此方法将抛出
BatchUpdateException
,JDBC驱动程序可能会或可能不会继续处理批处理中的其余命令。但是,驱动程序的行为必须与特定的DBMS一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在失败后继续处理,方法BatchUpdateException.getLargeUpdateCounts
返回的数组将包含与批处理中的命令数量相同的元素,至少其中一个元素将是以下之一: - 值为
EXECUTE_FAILED
- 表示命令未能成功执行,仅在驱动程序在命令失败后继续处理命令时发生
当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。默认实现将抛出
UnsupportedOperationException
- 返回:
- 包含批处理中每个命令的一个元素的更新计数数组。数组的元素按照将命令添加到批处理的顺序进行排序。
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,或驱动程序不支持批处理语句。如果发送到数据库的命令之一未能正确执行或尝试返回结果集,则抛出BatchUpdateException
(SQLException
的子类)。 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自:
- 1.8
- 参见:
-
executeLargeUpdate
执行给定的SQL语句,可以是INSERT
、UPDATE
或DELETE
语句,或者返回空值的SQL语句,例如SQL DDL语句。当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。默认实现将抛出
UnsupportedOperationException
- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
、UPDATE
或DELETE
;或返回空值的SQL语句,如DDL语句。 - 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,给定的SQL语句生成了ResultSet
对象,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并使用给定的标志向驱动程序指示此Statement
对象生成的自动生成键是否应该可用于检索。如果SQL语句不是INSERT
语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该标志。当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。默认实现将抛出
SQLFeatureNotSupportedException
- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
、UPDATE
或DELETE
;或返回空值的SQL语句,如DDL语句。 -
autoGeneratedKeys
- 指示是否应该为检索提供自动生成键的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS
Statement.NO_GENERATED_KEYS
- 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,给定的SQL语句返回了ResultSet
对象,给定的常量不是允许的常量之一,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持具有常量Statement.RETURN_GENERATED_KEYS
的此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并向驱动程序指示应该为检索提供的自动生成键。此数组包含目标表中包含应该提供的自动生成键的列的索引。如果SQL语句不是INSERT
语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。默认实现将抛出
SQLFeatureNotSupportedException
- 参数:
-
sql
- SQL数据操作语言(DML)语句,如INSERT
、UPDATE
或DELETE
;或返回空值的SQL语句,如DDL语句。 -
columnIndexes
- 包含应从插入行返回的列的列索引数组 - 返回:
- (1) SQL数据操作语言(DML)语句的行数或(2) 对于不返回任何内容的SQL语句为0
- 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,SQL语句返回了ResultSet
对象,此方法的第二个参数不是有效列索引的int
数组,该方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定由setQueryTimeout
方法指定的超时值已超过并且至少尝试取消当前运行的Statement
时 - 自:
- 1.8
-
executeLargeUpdate
执行给定的SQL语句,并向驱动程序指示应该为检索提供的自动生成键。此数组包含目标表中包含应该提供的自动生成键的列的名称。如果SQL语句不是INSERT
语句或能够返回自动生成键的SQL语句(此类语句的列表是特定于供应商的),驱动程序将忽略该数组。当返回的行数可能超过
Integer.MAX_VALUE
时,应使用此方法。注意:此方法不能在
PreparedStatement
或CallableStatement
上调用。默认实现将抛出
SQLFeatureNotSupportedException
- 参数:
-
sql
- 一个SQL数据操作语言(DML)语句,比如INSERT
,UPDATE
或DELETE
;或者一个不返回任何内容的SQL语句,比如DDL语句。 -
columnNames
- 一个包含应该从插入行返回的列名的数组 - 返回:
-
对于
INSERT
,UPDATE
或DELETE
语句,返回行数;对于不返回任何内容的SQL语句,返回0 - 抛出:
-
SQLException
- 如果发生数据库访问错误,此方法在关闭的Statement
上调用,SQL语句返回一个ResultSet
对象,此方法提供的第二个参数不是一个String
数组,其元素是有效的列名,此方法在PreparedStatement
或CallableStatement
上调用 -
SQLFeatureNotSupportedException
- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException
- 当驱动程序确定已超过setQueryTimeout
方法指定的超时值并且至少尝试取消当前运行的Statement
时 - 自版本:
- 1.8
-
enquoteLiteral
返回一个用单引号括起来的String
。字符串中的任何单引号都将被替换为两个单引号。转换示例: 值 结果 Hello 'Hello' G'Day 'G''Day' 'G''Day' '''G''''Day''' I'''M 'I''''''M' - 实现注意:
- JDBC驱动程序实现可能需要提供自己的此方法实现,以满足底层数据源的要求。
- 参数:
-
val
- 一个字符字符串 - 返回:
- 一个用单引号括起来的字符串,其中每个单引号都转换为两个单引号
- 抛出:
-
NullPointerException
- 如果val为null
-
SQLException
- 如果发生数据库访问错误 - 自版本:
- 9
-
enquoteIdentifier
返回一个SQL标识符。如果identifier
是一个简单的SQL标识符:- 如果
alwaysQuote
为false
,则返回原始值 - 如果
alwaysQuote
为true
,则返回一个带引号的标识符
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
检索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
返回一个用单引号括起来且以大写字母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
-