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