public interface Statement
用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下,同一时间每个 Statement
对象在只能打开一个 ResultSet
对象。因此,如果读取一个 ResultSet
对象与读取另一个交叉,则这两个对象必须是由不同的 Statement
对象生成的。如果存在某个语句的打开的当前 ResultSet
对象,则 Statement
接口中的所有执行方法都会隐式关闭它。
字段摘要 | |
---|---|
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 该常量指示批量语句执行成功但不存在受影响的可用行数计数。 |
方法摘要 | |
---|---|
void |
addBatch(String sql) 将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。 |
void |
cancel() 如果 DBMS 和驱动程序都支持中止 SQL 语句,则取消此 Statement 对象。 |
void |
clearBatch() 清空此 Statement 对象的当前 SQL 命令列表。 |
void |
clearWarnings() 清除在此 Statement 对象上报告的所有警告。 |
void |
close() 立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。 |
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() 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。 |
ResultSet |
executeQuery(String sql) 执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。 |
int |
executeUpdate(String sql) 执行给定 SQL 语句,该语句可能为 INSERT 、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。 |
int |
executeUpdate(String sql, int autoGeneratedKeys) 执行给定的 SQL 语句,并用给定标志通知驱动程序由此 Statement 生成的自动生成键是否可用于获取。 |
int |
executeUpdate(String sql, int[] columnIndexes) 执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 |
int |
executeUpdate(String sql, String[] columnNames) 执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。 |
Connection |
getConnection() 获取生成此 Statement 对象的 Connection 对象。 |
int |
getFetchDirection() 获取从数据库表获取行的方向,该方向是根据此 Statement 对象生成的结果集合的默认值。 |
int |
getFetchSize() 获取结果集合的行数,该数是根据此 Statement 对象生成的 ResultSet 对象的默认获取大小。 |
ResultSet |
getGeneratedKeys() 获取由于执行此 Statement 对象而创建的所有自动生成的键。 |
int |
getMaxFieldSize() 获取可以为此 Statement 对象所生成 ResultSet 对象中的字符和二进制列值返回的最大字节数。 |
int |
getMaxRows() 获取由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。 |
boolean |
getMoreResults() 移动到此 Statement 对象的下一个结果,如果其为 ResultSet 对象,则返回 true ,并隐式关闭利用方法 getResultSet 获取的所有当前 ResultSet 对象。 |
boolean |
getMoreResults(int current) 将此 Statement 对象移动到下一个结果,根据给定标志指定的指令处理所有当前 ResultSet 对象;如果下一个结果为 ResultSet 对象,则返回 true 。 |
int |
getQueryTimeout() 获取驱动程序等待 Statement 对象执行的秒数。 |
ResultSet |
getResultSet() 以 ResultSet 对象的形式获取当前结果。 |
int |
getResultSetConcurrency() 获取此 Statement 对象生成的 ResultSet 对象的结果集合并发性。 |
int |
getResultSetHoldability() 获取此 Statement 对象生成的 ResultSet 对象的结果集合可保存性。 |
int |
getResultSetType() 获取此 Statement 对象生成的 ResultSet 对象的结果集合类型。 |
int |
getUpdateCount() 以更新计数的形式获取当前结果;如果结果为 ResultSet 对象或没有更多结果,则返回 -1。 |
SQLWarning |
getWarnings() 获取此 Statement 对象上的调用报告的第一个警告。 |
boolean |
isClosed() 获取是否已关闭了此 Statement 对象。 |
boolean |
isPoolable() 返回指示 Statement 是否是可池化的值。 |
void |
setCursorName(String name) 将 SQL 指针名称设置为给定的 String ,后续 Statement 对象的 execute 方法将使用此字符串。 |
void |
setEscapeProcessing(boolean enable) 将转义处理设置为开或关。 |
void |
setFetchDirection(int direction) 向驱动程序提供关于方向的提示,在使用此 Statement 对象创建的 ResultSet 对象中将按该方向处理行。 |
void |
setFetchSize(int rows) 为 JDBC 驱动程序提供一个提示,它提示此 Statement 生成的 ResultSet 对象需要更多行时应该从数据库获取的行数。 |
void |
setMaxFieldSize(int max) 设置此 Statement 对象生成的 ResultSet 对象中字符和二进制列值可以返回的最大字节数限制。 |
void |
setMaxRows(int max) 将此 Statement 对象生成的所有 ResultSet 对象可以包含的最大行数限制设置为给定数。 |
void |
setPoolable(boolean poolable) 请求将 Statement 池化或非池化。 |
void |
setQueryTimeout(int seconds) 将驱动程序等待 Statement 对象执行的秒数设置为给定秒数。 |
从接口 java.sql.Wrapper 继承的方法 |
---|
isWrapperFor, unwrap |
字段详细信息 |
---|
static final int CLOSE_CURRENT_RESULT
getMoreResults
时应该关闭当前
ResultSet
对象。
static final int KEEP_CURRENT_RESULT
getMoreResults
时应该关闭当前
ResultSet
对象。
static final int CLOSE_ALL_RESULTS
getMoreResults
时应该关闭以前一直打开的所有
ResultSet
对象。
static final int SUCCESS_NO_INFO
static final int EXECUTE_FAILED
static final int RETURN_GENERATED_KEYS
static final int NO_GENERATED_KEYS
方法详细信息 |
---|
ResultSet executeQuery(String sql) throws SQLException
ResultSet
对象。
sql
- 要发送给数据库的 SQL 语句,通常为静态 SQL
SELECT
语句
ResultSet
对象;永远不能为
null
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者给定 SQL 语句生成单个
ResultSet
对象之外的任何其他内容
int executeUpdate(String sql) throws SQLException
INSERT
、
UPDATE
或
DELETE
语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
sql
- SQL 数据操作语言(Data Manipulation Language,DML)语句,如
INSERT
、
UPDATE
或
DELETE
;或者不返回任何内容的 SQL 语句,如 DDL 语句。
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者给定的 SQL 语句生成
ResultSet
对象
void close() throws SQLException
Statement
对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。一般来说,使用完后立即释放资源是一个好习惯,这样可以避免对数据库资源的占用。
在已经关闭的 Statement
对象上调用 close
方法无效。
注:关闭 Statement
对象时,还将同时关闭其当前的 ResultSet
对象(如果有)。
SQLException
- 如果发生数据库访问错误
int getMaxFieldSize() throws SQLException
Statement
对象所生成
ResultSet
对象中的字符和二进制列值返回的最大字节数。此限制仅应用于
BINARY
、
VARBINARY
、
LONGVARBINARY
、
CHAR
、
VARCHAR
、
NCHAR
、
NVARCHAR
、
LONGNVARCHAR
和
LONGVARCHAR
列。如果超过了该限制,则直接丢弃多出的数据。
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
setMaxFieldSize(int)
void setMaxFieldSize(int max) throws SQLException
Statement
对象生成的
ResultSet
对象中字符和二进制列值可以返回的最大字节数限制。此限制仅应用于
BINARY
、
VARBINARY
、
LONGVARBINARY
、
CHAR
、
VARCHAR
、
NCHAR
、
NVARCHAR
、
LONGNVARCHAR
和
LONGVARCHAR
字段。如果超过了该限制,则直接丢弃多出的数据。为了获得最大的可移植性,应该使用大于 256 的值。
max
- 以字节为单位的新列大小限制;0 表示没有任何限制
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者不满足条件 max >= 0
getMaxFieldSize()
int getMaxRows() throws SQLException
Statement
对象生成的
ResultSet
对象可以包含的最大行数。如果超过了此限制,则直接撤消多出的行。
Statement
对象生成的
ResultSet
对象的当前最大行数;0 表示不存在任何限制
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
setMaxRows(int)
void setMaxRows(int max) throws SQLException
Statement
对象生成的所有
ResultSet
对象可以包含的最大行数限制设置为给定数。如果超过了该限制,则直接撤消多出的行。
max
- 新的最大行数限制;0 表示没有任何限制
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者不满足条件 max >= 0
getMaxRows()
void setEscapeProcessing(boolean enable) throws SQLException
PreparedStatements
对象禁用转义处理无效。
enable
- 为
true
表示启用转义处理;为
false
表示禁用转义处理
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
int getQueryTimeout() throws SQLException
Statement
对象执行的秒数。如果超过该限制,则抛出
SQLException
。
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
setQueryTimeout(int)
void setQueryTimeout(int seconds) throws SQLException
Statement
对象执行的秒数设置为给定秒数。如果超过该限制,则抛出
SQLException
。JDBC 驱动程序必须将此限制应用于
execute
、
executeQuery
和
executeUpdate
方法。JDBC 驱动程序实现也可以将此限制应用于
ResultSet
方法(有关详细信息,请参考驱动程序供应商文档)。
seconds
- 以秒为单位的查询超时限制;0 表示没有任何限制
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者不满足条件 seconds >= 0
getQueryTimeout()
void cancel() throws SQLException
Statement
对象。一个线程可以使用此方法取消另一个线程正在执行的语句。
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
SQLFeatureNotSupportedException
- 如果 JDBC 驱动程序不支持此方法
SQLWarning getWarnings() throws SQLException
Statement
对象上的调用报告的第一个警告。后续的
Statement
对象警告将链接到此
SQLWarning
对象上。
每次(重新)执行语句时,都会自动清除警告链。不可以在关闭的 Statement
对象上调用此方法,这样做将导致抛出 SQLException
。
注:如果要处理 ResultSet
对象,则与该 ResultSet
对象上的读操作相关联的所有警告都链接到它上面,而不是链接到生成它的 Statement
对象上。
SQLWarning
对象;如果不存在任何警告,则返回
null
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
void clearWarnings() throws SQLException
Statement
对象上报告的所有警告。调用此方法后,在为此
Statement
对象报告新的警告之前,
getWarnings
方法将一直返回
null
。
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
void setCursorName(String name) throws SQLException
String
,后续
Statement
对象的
execute
方法将使用此字符串。然后,可以在 SQL 位置更新或删除语句中使用该名称来标识由此语句生成的
ResultSet
对象中的当前行。如果数据库不支持位置更新/删除,则此方法为无操作 (noop)。为了确保指针具有支持更新的适当隔离级别,指针的
SELECT
语句的形式应该为
SELECT FOR UPDATE
。如果
FOR UPDATE
不存在,则位置更新可能失败。
注:按照定义,位置更新和删除必须由生成的用于放置的 ResultSet
对象之外的某个 Statement
对象来执行。此外,在连接中指针名称还必须是唯一的。
name
- 新指针名称,该名称在连接中必须是唯一的
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
SQLFeatureNotSupportedException
- 如果 JDBC 驱动程序不支持此方法
boolean execute(String sql) throws SQLException
execute
方法执行 SQL 语句并指示第一个结果的形式。然后,必须使用方法 getResultSet
或 getUpdateCount
来获取结果,使用 getMoreResults
来移动后续结果。
sql
- 任何 SQL 语句
ResultSet
对象,则返回
true
;如果其为更新计数或者不存在任何结果,则返回
false
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
getResultSet()
,
getUpdateCount()
,
getMoreResults()
ResultSet getResultSet() throws SQLException
ResultSet
对象的形式获取当前结果。每个结果只应调用一次此方法。
ResultSet
对象的形式返回当前结果;如果结果是更新计数或没有更多的结果,则返回
null
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
execute(java.lang.String)
int getUpdateCount() throws SQLException
ResultSet
对象或没有更多结果,则返回 -1。每个结果只应调用一次此方法。
ResultSet
对象或没有更多结果,则返回 -1
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
execute(java.lang.String)
boolean getMoreResults() throws SQLException
Statement
对象的下一个结果,如果其为
ResultSet
对象,则返回
true
,并隐式关闭利用方法
getResultSet
获取的所有当前
ResultSet
对象。
当以下表达式为 true 时没有更多结果:
// stmt is a Statement object ((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
ResultSet
对象,则返回
true
;如果其为更新计数或不存在更多结果,则返回
false
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
execute(java.lang.String)
void setFetchDirection(int direction) throws SQLException
Statement
对象创建的
ResultSet
对象中将按该方向处理行。默认值为
ResultSet.FETCH_FORWARD
。
注意,此方法为此 Statement
对象生成的结果集合设置默认获取方向。每个结果集合都具有它自己用于获取和设置其自身获取方向的方法。
direction
- 用于处理行的初始方向
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者给定的方向不是
ResultSet.FETCH_FORWARD
、
ResultSet.FETCH_REVERSE
和
ResultSet.FETCH_UNKNOWN
之一
getFetchDirection()
int getFetchDirection() throws SQLException
Statement
对象生成的结果集合的默认值。如果此
Statement
对象没有通过调用方法
setFetchDirection
设置获取方向,则返回值是特定于实现的。
Statement
对象生成的结果集合的默认获取方向
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
setFetchDirection(int)
void setFetchSize(int rows) throws SQLException
Statement
生成的
ResultSet
对象需要更多行时应该从数据库获取的行数。指定的行数仅影响使用此语句创建的结果集合。如果指定的值为 0,则忽略该提示。默认值为 0。
rows
- 要获取的行数
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者不满足条件
rows >= 0
。
getFetchSize()
int getFetchSize() throws SQLException
Statement
对象生成的
ResultSet
对象的默认获取大小。如果此
Statement
对象没有通过调用方法
setFetchSize
设置获取大小,则返回值是特定于实现的。
Statement
对象生成的结果集合的默认获取大小
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
setFetchSize(int)
int getResultSetConcurrency() throws SQLException
Statement
对象生成的
ResultSet
对象的结果集合并发性。
ResultSet.CONCUR_READ_ONLY
或
ResultSet.CONCUR_UPDATABLE
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
int getResultSetType() throws SQLException
Statement
对象生成的
ResultSet
对象的结果集合类型。
ResultSet.TYPE_FORWARD_ONLY
、
ResultSet.TYPE_SCROLL_INSENSITIVE
或
ResultSet.TYPE_SCROLL_SENSITIVE
之一
SQLException
- 如果发生数据库访问错误,或者在已关闭的
Statement
上调用此方法
void addBatch(String sql) throws SQLException
Statement
对象的当前命令列表中。通过调用方法
executeBatch
可以批量执行此列表中的命令。
sql
- 通常此参数为 SQL
INSERT
或
UPDATE
语句
SQLException
- 如果发生数据库访问错误,在已关闭的
Statement
上调用此方法,或者驱动程序不支持批量更新
executeBatch()
,
DatabaseMetaData.supportsBatchUpdates()
void clearBatch() throws SQLExcept