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