-
- 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 intCLOSE_ALL_RESULTS常数表示,当调用getMoreResults时,所有已保留打开的ResultSet对象都应关闭。static intCLOSE_CURRENT_RESULT该常量表示当调用getMoreResults时,应关闭当前的ResultSet对象。static intEXECUTE_FAILED指示执行批处理语句时发生错误的常量。static intKEEP_CURRENT_RESULT该常量表示当调用getMoreResults时不应关闭当前的ResultSet对象。static intNO_GENERATED_KEYS常数表示生成的密钥不应该可用于检索。static intRETURN_GENERATED_KEYS常数表示生成的密钥应该可用于检索。static intSUCCESS_NO_INFO指示批处理语句执行成功但不影响其行数的常量可用的常量。
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 voidaddBatch(String sql)将给定的SQL命令添加到此Statement对象的当前命令列表中。voidcancel()如果DBMS和驱动程序都支持中止SQL语句,则取消此Statement对象。voidclearBatch()清空这个Statement对象当前的SQL命令列表。voidclearWarnings()清除所有在这个Statement对象上报告的警告。voidclose()立即释放此Statement对象的数据库和JDBC资源,而不是等待它自动关闭时发生。voidcloseOnCompletion()指定当其所有相关结果集都关闭时,此Statement将关闭。default StringenquoteIdentifier(String identifier, boolean alwaysQuote)返回一个SQL标识符。default StringenquoteLiteral(String val)返回一个包含在单引号中的String。default StringenquoteNCharLiteral(String val)返回一个String表示一个用单引号括起来的前缀为大写字母N的国家字符集文字。booleanexecute(String sql)执行给定的SQL语句,这可能会返回多个结果。booleanexecute(String sql, int autoGeneratedKeys)执行给定的SQL语句,这可能返回多个结果,并向驱动程序发出信号,指出任何自动生成的密钥应该可用于检索。booleanexecute(String sql, int[] columnIndexes)执行给定的SQL语句,这可能返回多个结果,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。booleanexecute(String sql, String[] columnNames)执行给定的SQL语句,这可能返回多个结果,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。int[]executeBatch()将一批命令提交到数据库以执行,并且所有命令都执行成功,返回一个更新计数的数组。default long[]executeLargeBatch()将一批命令提交到数据库以执行,并且所有命令都执行成功,返回一个更新计数的数组。default longexecuteLargeUpdate(String sql)执行给定的SQL语句,这可能是INSERT,UPDATE,或DELETE声明,或者不返回任何内容,如SQL DDL语句的SQL语句。default longexecuteLargeUpdate(String sql, int autoGeneratedKeys)执行给定的SQL语句,并用给定的标志来向驱动程序发出信号,指出这个Statement对象生成的自动生成的密钥是否应该可用于检索。default longexecuteLargeUpdate(String sql, int[] columnIndexes)执行给定的SQL语句,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。default longexecuteLargeUpdate(String sql, String[] columnNames)执行给定的SQL语句,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。ResultSetexecuteQuery(String sql)执行给定的SQL语句,返回一个ResultSet对象。intexecuteUpdate(String sql)执行给定的SQL语句,这可能是INSERT,UPDATE,或DELETE声明,或者不返回任何内容,如SQL DDL语句的SQL语句。intexecuteUpdate(String sql, int autoGeneratedKeys)执行给定的SQL语句,并用给定的标志来向驱动程序发出信号,指出这个Statement对象产生的自动生成的密钥是否应该可用于检索。intexecuteUpdate(String sql, int[] columnIndexes)执行给定的SQL语句,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。intexecuteUpdate(String sql, String[] columnNames)执行给定的SQL语句,并向驱动程序发出信号,指出给定数组中指示的自动生成的键应该可用于检索。ConnectiongetConnection()检索Connection生成此对象Statement对象。intgetFetchDirection()检索从数据库表中获取行的方向,这是从此Statement对象生成的结果集的默认值。intgetFetchSize()检索结果集合的行数是默认为获取大小ResultSet从该生成的对象Statement对象。ResultSetgetGeneratedKeys()检索作为执行此Statement对象的结果创建的任何自动生成的密钥。default longgetLargeMaxRows()检索一个的最大行数ResultSet由此产生对象Statement对象可以包含。default longgetLargeUpdateCount()将当前结果作为更新计数检索; 如果结果是一个ResultSet对象或没有更多结果,则返回-1。intgetMaxFieldSize()检索可以在被返回字符和二进制列值的最大字节数ResultSet由此产生对象Statement对象。intgetMaxRows()检索一个的最大行数ResultSet由此产生对象Statement对象可以包含。booleangetMoreResults()移动到此Statement对象的下一个结果,如果它是一个ResultSet对象,则返回true,并隐式关闭使用方法getResultSet获取的任何当前的ResultSet对象。booleangetMoreResults(int current)移动到此Statement对象的下一个结果,根据给定标志指定的指令处理任何当前的ResultSet对象,如果下一个结果是一个ResultSet对象,则返回true。intgetQueryTimeout()检索驱动程序等待执行Statement对象的Statement。ResultSetgetResultSet()以ResultSet对象获取当前结果。intgetResultSetConcurrency()检索由ResultSet对象生成的Statement对象的结果集并发。intgetResultSetHoldability()检索ResultSet对象生成的对象的结果集Statement。intgetResultSetType()检索ResultSet对象生成的Statement对象的结果集类型。intgetUpdateCount()将当前结果作为更新计数检索; 如果结果是一个ResultSet对象或没有更多结果,则返回-1。SQLWarninggetWarnings()检索通过此Statement对象的呼叫报告的第一个警告。booleanisClosed()检索此Statement对象是否已关闭。booleanisCloseOnCompletion()返回一个值,指示当其所有相关结果集都关闭时,此Statement是否关闭。booleanisPoolable()返回一个值,指示Statement是否可Statement。default booleanisSimpleIdentifier(String identifier)检索identifier是否是一个简单的SQL标识符。voidsetCursorName(String name)将SQL游标名称设置为给定的String,这将由后续的Statement对象execute方法使用。voidsetEscapeProcessing(boolean enable)设置逃脱处理打开或关闭。voidsetFetchDirection(int direction)给出驱动程序一个关于使用这个Statement对象创建的ResultSet对象中处理行的方向的提示。voidsetFetchSize(int rows)给JDBC驱动程序提供一个关于应该从数据库中获取的行数,提供ResultSet由Statement生成的对象的更多行。default voidsetLargeMaxRows(long max)设置的任何行的最大数目的极限ResultSet由此生成的对象Statement对象可以包含给定数目。voidsetMaxFieldSize(int max)设置由ResultSet对象产生的Statement对象中的字符和二进制列值可以返回的最大字节数限制。voidsetMaxRows(int max)设置的任何行的最大数目的极限ResultSet由此生成的对象Statement对象可以包含给定数目。voidsetPoolable(boolean poolable)请求汇集或不汇集Statement。voidsetQueryTimeout(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_KEYSStatement.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对象被关闭,Statementtrue; 如果它仍然开放,则为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_KEYSStatement.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
-
-