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, unwrapstatic 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
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.