-
- All Superinterfaces:
-
AutoCloseable,Wrapper
- All Known Subinterfaces:
-
CallableStatement,PreparedStatement
public interface Statement extends Wrapper, AutoCloseable
用于执行静态SQL语句并返回其生成的结果的对象。
默认情况下,每个
Statement对象只能同时打开一个ResultSet对象。 因此,如果读取一个ResultSet对象与另一个对象的读取交错,则每个对象必须由不同的Statement对象生成。 如果存在打开的语句,则Statement接口中的所有执行方法Statement隐式关闭语句的当前ResultSet对象。- 从以下版本开始:
- 1.1
- 另请参见:
-
Connection.createStatement(),ResultSet
-
-
字段汇总
字段 变量和类型 字段 描述 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 变量和类型 方法 描述 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是否可以使用。default booleanisSimpleIdentifier(String identifier)检索identifier是否是简单的SQL标识符。voidsetCursorName(String name)将SQL游标名称设置为给定的String,这将由后续的Statement对象execute方法使用。voidsetEscapeProcessing(boolean enable)打开或关闭转义处理。voidsetFetchDirection(int direction)为驱动程序提供有关在使用此Statement对象创建的ResultSet对象中处理行的方向的提示。voidsetFetchSize(int rows)当此Statement生成的ResultSet对象需要更多行时,ResultSetJDBC驱动程序提供有关应从数据库中提取的行数的提示。default voidsetLargeMaxRows(long max)设置此ResultSet对象生成的任何Statement对象可包含的最大行数限制为给定数字。voidsetMaxFieldSize(int max)设置此ResultSet对象生成的Statement对象中字符和二进制列值可返回的最大字节数限制。voidsetMaxRows(int max)设置此ResultSet对象生成的任何Statement对象可以包含的最大行数限制为给定数字。voidsetPoolable(boolean poolable)请求汇集或不汇集Statement。voidsetQueryTimeout(int seconds)设置驱动程序等待Statement对象执行到指定秒数的秒数。-
声明方法的接口 java.sql.Wrapper
isWrapperFor, unwrap
-
-
-
-
字段详细信息
-
CLOSE_CURRENT_RESULT
static final int CLOSE_CURRENT_RESULT
该常量指示在调用getMoreResults时应关闭当前的ResultSet对象。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
KEEP_CURRENT_RESULT
static final int KEEP_CURRENT_RESULT
该常量指示在调用getMoreResults时不应关闭当前的ResultSet对象。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
CLOSE_ALL_RESULTS
static final int CLOSE_ALL_RESULTS
该常量指示在调用getMoreResults时应关闭先前保持打开的所有ResultSet对象。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
SUCCESS_NO_INFO
static final int SUCCESS_NO_INFO
该常量指示批处理语句已成功执行但不影响其受影响的行数。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
EXECUTE_FAILED
static final int EXECUTE_FAILED
该常量指示执行批处理语句时发生错误。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
RETURN_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS
常量表示生成的键应该可用于检索。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
NO_GENERATED_KEYS
static final int NO_GENERATED_KEYS
该常量指示不应使生成的键可用于检索。- 从以下版本开始:
- 1.4
- 另请参见:
- 常数字段值
-
-
方法详细信息
-
executeQuery
ResultSet executeQuery(String sql) throws SQLException
执行给定的SQL语句,该语句返回单个ResultSet对象。注意:不能在
PreparedStatement或CallableStatement上调用此方法。- 参数
-
sql- 要发送到数据库的SQL语句,通常是静态SQLSELECT语句 - 结果
-
包含给定查询生成的数据的
ResultSet对象; 从来没有null - 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的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上调用此方法,给定的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上调用此方法 - 另请参见:
-
setMaxFieldSize(int)
-
setMaxFieldSize
void setMaxFieldSize(int max) throws SQLException设置此ResultSet对象生成的Statement对象中可以为字符和二进制列值返回的最大字节数限制。 此限制仅适用于BINARY,VARBINARY,LONGVARBINARY,CHAR,VARCHAR,NCHAR,NVARCHAR,LONGNVARCHAR个LONGVARCHAR领域。 如果超出限制,则会以静默方式丢弃多余的数据。 为获得最大的可移植性,请使用大于256的值。- 参数
-
max- 新的列大小限制(以字节为单位); 零意味着没有限制 - 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的Statement上调用此方法,或者不满足条件max >= 0 - 另请参见:
-
getMaxFieldSize()
-
getMaxRows
int getMaxRows() throws SQLException检索此ResultSet对象生成的Statement对象可包含的最大行数。 如果超出此限制,则会以静默方式删除多余的行。- 结果
-
此
ResultSet对象生成的Statement对象的当前最大行数; 零意味着没有限制 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 另请参见:
-
setMaxRows(int)
-
setMaxRows
void setMaxRows(int max) throws SQLException设置此ResultSet对象生成的任何Statement对象可包含的最大行数限制为给定数字。 如果超出限制,则会以静默方式删除多余的行。- 参数
-
max- 新的最大行限制; 零意味着没有限制 - 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的Statement上调用此方法,或者不满足条件max >= 0 - 另请参见:
-
getMaxRows()
-
setEscapeProcessing
void setEscapeProcessing(boolean enable) throws SQLException打开或关闭转义处理。 如果启用了转义扫描(默认设置),则驱动程序将在将SQL语句发送到数据库之前执行转义替换。Connection和DataSource字段escapeProcessing可用于更改默认转义处理行为。 值true(默认值)启用所有Statement对象的转义处理。 值false将禁用所有Statement对象的转义处理。setEscapeProcessing方法可用于指定单个Statement对象的转义处理行为。注意:由于在进行此调用之前通常已解析
PreparedStatements准备语句,因此禁用PreparedStatements对象的转义处理将不起作用。- 参数
-
enable-true启用转义处理;false禁用它 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法
-
getQueryTimeout
int getQueryTimeout() throws SQLException检索驱动程序等待Statement对象执行的Statement。 如果超出限制,则抛出SQLException。- 结果
- 当前查询超时限制,以秒为单位; 零意味着没有限制
- 异常
-
SQLException- 如果发生数据库访问错误或在关闭的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上调用此方法,或者不满足条件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上调用此方法
-
setCursorName
void setCursorName(String name) throws SQLException
将SQL游标名称设置为给定的String,这将由后续的Statement对象execute方法使用。 然后,可以在SQL定位更新或删除语句中使用此名称来标识此语句生成的ResultSet对象中的当前行。 如果数据库不支持定位更新/删除,则此方法是noop。 为确保游标具有适当的隔离级别以支持更新,游标的SELECT语句的格式应为SELECT FOR UPDATE。 如果FOR UPDATE不存在,则定位的更新可能会失败。注意:根据定义,定位更新和删除的执行必须由与生成用于定位的
ResultSet对象的对象不同的Statement对象完成。 此外,游标名称在连接中必须是唯一的。- 参数
-
name- 新游标名称,在连接中必须是唯一的 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的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上调用此方法,该方法在PreparedStatement或CallableStatement -
SQLTimeoutException- 当驱动程序确定已超出setQueryTimeout方法指定的超时值且至少尝试取消当前运行的Statement - 另请参见:
-
getResultSet(),getUpdateCount(),getMoreResults()
-
getResultSet
ResultSet getResultSet() throws SQLException
以ResultSet对象的形式检索当前结果。 每个结果只应调用一次此方法。- 结果
-
当前结果为
ResultSet对象或null如果结果是更新计数或没有更多结果 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 另请参见:
-
execute(java.lang.String)
-
getUpdateCount
int getUpdateCount() throws SQLException检索当前结果作为更新计数; 如果结果是ResultSet对象或没有更多结果,则返回-1。 每个结果只应调用一次此方法。- 结果
-
当前结果作为更新计数;
-1如果当前结果是
ResultSet对象或没有更多结果 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 另请参见:
-
execute(java.lang.String)
-
getMoreResults
boolean getMoreResults() throws SQLException移动到此Statement对象的下一个结果,返回true如果是ResultSet对象,并隐式关闭任何电流ResultSet的方法获得(多个)对象getResultSet。满足以下条件时,没有更多结果:
// stmt is a Statement object ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))- 结果
-
true如果下一个结果是ResultSet对象;false如果是更新计数或没有更多结果 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 另请参见:
-
execute(java.lang.String)
-
setFetchDirection
void setFetchDirection(int direction) throws SQLException为驱动程序提供有关在使用此Statement对象创建的ResultSet对象中处理行的方向的提示。 默认值为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上调用此方法 - 从以下版本开始:
- 1.2
- 另请参见:
-
setFetchDirection(int)
-
setFetchSize
void setFetchSize(int rows) throws SQLException当此Statement生成的ResultSet对象需要更多行时,为JDBC驱动程序提供有关应从数据库中提取的行数的提示。 如果指定的值为零,则忽略提示。 默认值为零。- 参数
-
rows- 要获取的行数 - 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的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上调用此方法 - 从以下版本开始:
- 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上调用此方法,驱动程序不支持批量更新,该方法在PreparedStatement或CallableStatement - 从以下版本开始:
- 1.2
- 另请参见:
-
executeBatch(),DatabaseMetaData.supportsBatchUpdates()
-
clearBatch
void clearBatch() throws SQLException清空此Statement对象的当前SQL命令列表。- 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的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标准版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上调用此方法 -
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上调用此方法,给定的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上调用此方法,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上调用此方法,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使自动生成的密钥可用于检索; 以下常量之一: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上调用此方法,传递给此方法的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上调用此方法,传递给此方法的String数组的元素不是有效的列名,该方法在PreparedStatement或CallableStatement -
SQLFeatureNotSupportedException- 如果JDBC驱动程序不支持此方法 -
SQLTimeoutException- 当驱动程序确定已超出setQueryTimeout方法指定的超时值且至少尝试取消当前运行的Statement - 从以下版本开始:
- 1.4
- 另请参见:
-
getResultSet(),getUpdateCount(),getMoreResults(),getGeneratedKeys()
-
getResultSetHoldability
int getResultSetHoldability() throws SQLException检索此ResultSet对象生成的Statement对象的结果集可ResultSet。- 结果
-
ResultSet.HOLD_CURSORS_OVER_COMMIT或ResultSet.CLOSE_CURSORS_AT_COMMIT - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的Statement上调用此方法 - 从以下版本开始:
- 1.4
-
isClosed
boolean isClosed() throws SQLException检索此Statement对象是否已关闭。 如果已在其上调用方法关闭,或者它已自动关闭,则关闭Statement。- 结果
-
如果此
Statement对象已关闭,Statementtrue;否则为Statement。 如果它仍然打开则为false - 异常
-
SQLException- 如果发生数据库访问错误 - 从以下版本开始:
- 1.6
-
setPoolable
void setPoolable(boolean poolable) throws SQLException要求汇集或不汇集Statement。 指定的值是语句池实现的提示,指示应用程序是否希望将语句合并。 由语句池管理器决定是否使用提示。语句的poolable值适用于由驱动程序实现的内部语句高速缓存和由应用程序服务器和其他应用程序实现的外部语句高速缓存。
默认情况下,
Statement在创建时不可用,并且PreparedStatement和CallableStatement在创建时可以使用。- 参数
-
poolable- 如果为true,则请求将该语句合并,如果为false,则声明该语句不被合并 - 异常
-
SQLException- 如果在关闭的Statement上调用此方法 - 从以下版本开始:
- 1.6
-
isPoolable
boolean isPoolable() throws SQLException返回一个值,指示Statement是否可以使用。- 结果
-
true如果Statement可以使用; 否则为false - 异常
-
SQLException- 如果在关闭的Statement上调用此方法 - 从以下版本开始:
- 1.6
- 另请参见:
-
setPoolable(boolean)
-
closeOnCompletion
void closeOnCompletion() throws SQLException指定在关闭所有相关结果集时将关闭此Statement。 如果执行Statement不生成任何结果集,则此方法无效。注意:多次调用
closeOnCompletion不会切换对此Statement的影响。 但是,对closeOnCompletion的调用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上调用此方法 - 从以下版本开始:
- 1.8
- 另请参见:
-
execute(java.lang.String)
-
setLargeMaxRows
default void setLargeMaxRows(long max) throws SQLException设置此ResultSet对象生成的任何Statement对象可包含的最大行数限制为给定数字。 如果超出限制,则会以静默方式删除多余的行。当行限制可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将抛出
UnsupportedOperationException- 参数
-
max- 新的最大行限制; 零意味着没有限制 - 异常
-
SQLException- 如果发生数据库访问错误,则在关闭的Statement上调用此方法,或者不满足条件max >= 0 - 从以下版本开始:
- 1.8
- 另请参见:
-
getMaxRows()
-
getLargeMaxRows
default long getLargeMaxRows() throws SQLException检索此ResultSet对象生成的Statement对象可包含的最大行数。 如果超出此限制,则会以静默方式删除多余的行。当返回的行限制可能超过
Integer.MAX_VALUE时,应使用此方法。默认实现将返回
0- 结果
-
此
ResultSet对象生成的Statement对象的当前最大行数; 零意味着没有限制 - 异常
-
SQLException- 如果发生数据库访问错误或在关闭的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上调用此方法,或者驱动程序不支持批处理语句。 抛出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上调用此方法,给定的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上调用此方法,给定的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上调用此方法,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上调用此方法,SQL语句返回ResultSet对象,提供给此方法的第二个参数不是String数组,其元素是有效的列名,该方法被调用aPreparedStatement或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则返回分隔标识符
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
-
-