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