-
- 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 int
CLOSE_ALL_RESULTS
该常量指示在调用getMoreResults
时应关闭先前保持打开的所有ResultSet
对象。static int
CLOSE_CURRENT_RESULT
该常量指示在调用getMoreResults
时应关闭当前的ResultSet
对象。static int
EXECUTE_FAILED
该常量指示执行批处理语句时发生错误。static int
KEEP_CURRENT_RESULT
该常量指示在调用getMoreResults
时不应关闭当前的ResultSet
对象。static int
NO_GENERATED_KEYS
该常量指示不应使生成的键可用于检索。static int
RETURN_GENERATED_KEYS
常量表示生成的键应该可用于检索。static int
SUCCESS_NO_INFO
该常量指示批处理语句已成功执行但不影响其受影响的行数。
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 void
addBatch(String sql)
将给定的SQL命令添加到此Statement
对象的当前命令列表中。void
cancel()
如果DBMS和驱动程序都支持中止SQL语句,则取消此Statement
对象。void
clearBatch()
清空此Statement
对象的当前SQL命令列表。void
clearWarnings()
清除此Statement
对象上报告的所有警告。void
close()
立即释放此Statement
对象的数据库和JDBC资源,而不是等待它自动关闭时发生。void
closeOnCompletion()
指定在关闭所有相关结果集时将关闭此Statement
。default String
enquoteIdentifier(String identifier, boolean alwaysQuote)
返回SQL标识符。default String
enquoteLiteral(String val)
返回用单引号括起来的String
。default String
enquoteNCharLiteral(String val)
返回String
表示用单引号括起来的国家字符集文字,并以大写字母N为前缀。boolean
execute(String sql)
执行给定的SQL语句,该语句可能返回多个结果。boolean
execute(String sql, int autoGeneratedKeys)
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,告知任何自动生成的键应该可用于检索。boolean
execute(String sql, int[] columnIndexes)
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。boolean
execute(String sql, String[] columnNames)
执行给定的SQL语句,该语句可能返回多个结果,并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。int[]
executeBatch()
将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。default long[]
executeLargeBatch()
将一批命令提交到数据库以供执行,如果所有命令成功执行,则返回一组更新计数。default long
executeLargeUpdate(String sql)
执行给定的SQL语句,这可能是INSERT
,UPDATE
,或DELETE
语句,或者不返回任何内容,如SQL DDL语句的SQL语句。default long
executeLargeUpdate(String sql, int autoGeneratedKeys)
执行给定的SQL语句,并通过给定标志向驱动程序发出信号,告知该Statement
对象生成的自动生成的密钥是否可用于检索。default long
executeLargeUpdate(String sql, int[] columnIndexes)
执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。default long
executeLargeUpdate(String sql, String[] columnNames)
执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。ResultSet
executeQuery(String sql)
执行给定的SQL语句,该语句返回单个ResultSet
对象。int
executeUpdate(String sql)
执行给定的SQL语句,这可能是INSERT
,UPDATE
,或DELETE
语句,或者不返回任何内容,如SQL DDL语句的SQL语句。int
executeUpdate(String sql, int autoGeneratedKeys)
执行给定的SQL语句,并使用给定标志向驱动程序发出信号,告知该Statement
对象生成的自动生成的密钥是否可用于检索。int
executeUpdate(String sql, int[] columnIndexes)
执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。int
executeUpdate(String sql, String[] columnNames)
执行给定的SQL语句并向驱动程序发出信号,指示给定数组中指示的自动生成的键应该可用于检索。Connection
getConnection()
检索Connection
生成此对象Statement
对象。int
getFetchDirection()
检索从数据库表中获取行的方向,该方向是从此Statement
对象生成的结果集的缺省值。int
getFetchSize()
检索结果集合的行数是默认为获取大小ResultSet
从该生成的对象Statement
对象。ResultSet
getGeneratedKeys()
检索由于执行此Statement
对象而创建的任何自动生成的密钥。default long
getLargeMaxRows()
检索此ResultSet
对象生成的Statement
对象可包含的最大行数。default long
getLargeUpdateCount()
检索当前结果作为更新计数; 如果结果是ResultSet
对象或没有更多结果,则返回-1。int
getMaxFieldSize()
检索此ResultSet
对象生成的Statement
对象中可以为字符和二进制列值返回的最大字节数。int
getMaxRows()
检索此ResultSet
对象生成的Statement
对象可包含的最大行数。boolean
getMoreResults()
移动到此Statement
对象的下一个结果,如果它是ResultSet
对象,则返回true
,并隐式关闭使用方法getResultSet
获得的任何当前ResultSet
对象。boolean
getMoreResults(int current)
移动到此Statement
对象的下一个结果,根据给定标志指定的指令处理任何当前的ResultSet
对象,如果下一个结果是ResultSet
对象,则返回true
。int
getQueryTimeout()
检索驱动程序等待Statement
对象执行的Statement
。ResultSet
getResultSet()
以ResultSet
对象的形式检索当前结果。int
getResultSetConcurrency()
检索此ResultSet
对象生成的Statement
对象的结果集并发性。int
getResultSetHoldability()
检索此ResultSet
对象生成的Statement
对象的结果集可保存性。int
getResultSetType()
检索此ResultSet
对象生成的Statement
对象的结果集类型。int
getUpdateCount()
检索当前结果作为更新计数; 如果结果是ResultSet
对象或没有更多结果,则返回-1。SQLWarning
getWarnings()
检索此Statement
对象上的调用报告的第一个警告。boolean
isClosed()
检索此Statement
对象是否已关闭。boolean
isCloseOnCompletion()
返回一个值,该值指示在关闭所有相关结果集时是否将关闭此Statement
。boolean
isPoolable()
返回一个值,指示Statement
是否可以使用。default boolean
isSimpleIdentifier(String identifier)
检索identifier
是否是简单的SQL标识符。void
setCursorName(String name)
将SQL游标名称设置为给定的String
,这将由后续的Statement
对象execute
方法使用。void
setEscapeProcessing(boolean enable)
打开或关闭转义处理。void
setFetchDirection(int direction)
为驱动程序提供有关在使用此Statement
对象创建的ResultSet
对象中处理行的方向的提示。void
setFetchSize(int rows)
当此Statement
生成的ResultSet
对象需要更多行时,ResultSet
JDBC驱动程序提供有关应从数据库中提取的行数的提示。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
对象执行到指定秒数的秒数。-
声明方法的接口 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_KEYS
Statement.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
对象已关闭,Statement
true;否则为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_KEYS
Statement.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
-
-