JavaTM Platform
Standard Ed. 6

java.sql
接口 Statement

所有超级接口:
Wrapper
所有已知子接口:
CallableStatement, PreparedStatement

public interface Statement
extends Wrapper

用于执行静态 SQL 语句并返回它所生成结果的对象。

在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。

另请参见:
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
          该常量指示批量语句执行成功但不存在受影响的可用行数计数。
 
方法摘要
 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 语句,该语句可能为 INSERTUPDATEDELETE 语句,或者不返回任何内容的 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
 

字段详细信息

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 对象。

参数:
sql - 要发送给数据库的 SQL 语句,通常为静态 SQL SELECT 语句
返回:
包含给定查询所生成数据的 ResultSet 对象;永远不能为 null
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者给定 SQL 语句生成单个 ResultSet 对象之外的任何其他内容

executeUpdate

int executeUpdate(String sql)
                  throws SQLException
执行给定 SQL 语句,该语句可能为 INSERTUPDATEDELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

参数:
sql - SQL 数据操作语言(Data Manipulation Language,DML)语句,如 INSERTUPDATEDELETE;或者不返回任何内容的 SQL 语句,如 DDL 语句。
返回:
(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数 (2) 对于什么都不返回的 SQL 语句,返回 0
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者给定的 SQL 语句生成 ResultSet 对象

close

void close()
           throws SQLException
立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等待该对象自动关闭时发生此操作。一般来说,使用完后立即释放资源是一个好习惯,这样可以避免对数据库资源的占用。

在已经关闭的 Statement 对象上调用 close 方法无效。

注:关闭 Statement 对象时,还将同时关闭其当前的 ResultSet 对象(如果有)。

抛出:
SQLException - 如果发生数据库访问错误

getMaxFieldSize

int getMaxFieldSize()
                    throws SQLException
获取可以为此 Statement 对象所生成 ResultSet 对象中的字符和二进制列值返回的最大字节数。此限制仅应用于 BINARYVARBINARYLONGVARBINARYCHARVARCHARNCHARNVARCHARLONGNVARCHARLONGVARCHAR 列。如果超过了该限制,则直接丢弃多出的数据。

返回:
存储字符和二进制值的列的当前列大小限制;0 表示没有任何限制
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
另请参见:
setMaxFieldSize(int)

setMaxFieldSize

void setMaxFieldSize(int max)
                     throws SQLException
设置此 Statement 对象生成的 ResultSet 对象中字符和二进制列值可以返回的最大字节数限制。此限制仅应用于 BINARYVARBINARYLONGVARBINARYCHARVARCHARNCHARNVARCHARLONGNVARCHARLONGVARCHAR 字段。如果超过了该限制,则直接丢弃多出的数据。为了获得最大的可移植性,应该使用大于 256 的值。

参数:
max - 以字节为单位的新列大小限制;0 表示没有任何限制
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者不满足条件 max >= 0
另请参见:
getMaxFieldSize()

getMaxRows

int getMaxRows()
               throws SQLException
获取由此 Statement 对象生成的 ResultSet 对象可以包含的最大行数。如果超过了此限制,则直接撤消多出的行。

返回:
由此 Statement 对象生成的 ResultSet 对象的当前最大行数;0 表示不存在任何限制
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
另请参见:
setMaxRows(int)

setMaxRows

void setMaxRows(int max)
                throws SQLException
将此 Statement 对象生成的所有 ResultSet 对象可以包含的最大行数限制设置为给定数。如果超过了该限制,则直接撤消多出的行。

参数:
max - 新的最大行数限制;0 表示没有任何限制
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者不满足条件 max >= 0
另请参见:
getMaxRows()

setEscapeProcessing

void setEscapeProcessing(boolean enable)
                         throws SQLException
将转义处理设置为开或关。如果转义扫描为开启(默认值),则驱动程序在将 SQL 语句发送到数据库之前执行转义替换。注:因为准备的语句通常在进行此调用之前解析,所以对 PreparedStatements 对象禁用转义处理无效。

参数:
enable - 为 true 表示启用转义处理;为 false 表示禁用转义处理
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法

getQueryTimeout

int getQueryTimeout()
                    throws SQLException
获取驱动程序等待 Statement 对象执行的秒数。如果超过该限制,则抛出 SQLException

返回:
以秒为单位的当前查询超时限制;0 表示不存在任何限制
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
另请参见:
setQueryTimeout(int)

setQueryTimeout

void setQueryTimeout(int seconds)
                     throws SQLException
将驱动程序等待 Statement 对象执行的秒数设置为给定秒数。如果超过该限制,则抛出 SQLException。JDBC 驱动程序必须将此限制应用于 executeexecuteQueryexecuteUpdate 方法。JDBC 驱动程序实现也可以将此限制应用于 ResultSet 方法(有关详细信息,请参考驱动程序供应商文档)。

参数:
seconds - 以秒为单位的查询超时限制;0 表示没有任何限制
抛出:
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 对象上报告的所有警告。调用此方法后,在为此 Statement 对象报告新的警告之前,getWarnings 方法将一直返回 null

抛出:
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 语句并指示第一个结果的形式。然后,必须使用方法 getResultSetgetUpdateCount 来获取结果,使用 getMoreResults 来移动后续结果。

参数:
sql - 任何 SQL 语句
返回:
如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 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。每个结果只应调用一次此方法。

返回:
以更新计数的形式返回当前结果;如果当前结果为 ResultSet 对象或没有更多结果,则返回 -1
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
另请参见:
execute(java.lang.String)

getMoreResults

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)

setFetchDirection

void setFetchDirection(int direction)
                       throws SQLException
向驱动程序提供关于方向的提示,在使用此 Statement 对象创建的 ResultSet 对象中将按该方向处理行。默认值为 ResultSet.FETCH_FORWARD

注意,此方法为此 Statement 对象生成的结果集合设置默认获取方向。每个结果集合都具有它自己用于获取和设置其自身获取方向的方法。

参数:
direction - 用于处理行的初始方向
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者给定的方向不是 ResultSet.FETCH_FORWARDResultSet.FETCH_REVERSEResultSet.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
为 JDBC 驱动程序提供一个提示,它提示此 Statement 生成的 ResultSet 对象需要更多行时应该从数据库获取的行数。指定的行数仅影响使用此语句创建的结果集合。如果指定的值为 0,则忽略该提示。默认值为 0。

参数:
rows - 要获取的行数
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者不满足条件 rows >= 0
从以下版本开始:
1.2
另请参见:
getFetchSize()

getFetchSize

int getFetchSize()
                 throws SQLException
获取结果集合的行数,该数是根据此 Statement 对象生成的 ResultSet 对象的默认获取大小。如果此 Statement 对象没有通过调用方法 setFetchSize 设置获取大小,则返回值是特定于实现的。

返回:
根据此 Statement 对象生成的结果集合的默认获取大小
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
从以下版本开始:
1.2
另请参见:
setFetchSize(int)

getResultSetConcurrency

int getResultSetConcurrency()
                            throws SQLException
获取此 Statement 对象生成的 ResultSet 对象的结果集合并发性。

返回:
ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
从以下版本开始:
1.2

getResultSetType

int getResultSetType()
                     throws SQLException
获取此 Statement 对象生成的 ResultSet 对象的结果集合类型。

返回:
ResultSet.TYPE_FORWARD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE 之一
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
从以下版本开始:
1.2

addBatch

void addBatch(String sql)
              throws SQLException
将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方法 executeBatch 可以批量执行此列表中的命令。

参数:
sql - 通常此参数为 SQL INSERTUPDATE 语句
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批量更新
从以下版本开始:
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 返回的数组中的元素可能为以下元素之一:
  1. 大于等于 0 的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
  2. SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的

    如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为:

  3. EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现

在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。

返回:
包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateExceptionSQLException 的子类)。
从以下版本开始:
1.3
另请参见:
addBatch(java.lang.String), DatabaseMetaData.supportsBatchUpdates()

getConnection

Connection getConnection()
                         throws SQLException
获取生成此 Statement 对象的 Connection 对象。

返回:
此语句生成的连接
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
从以下版本开始:
1.2

getMoreResults

boolean getMoreResults(int current)
                       throws SQLException
将此 Statement 对象移动到下一个结果,根据给定标志指定的指令处理所有当前 ResultSet 对象;如果下一个结果为 ResultSet 对象,则返回 true

当以下表达式为 true 时没有更多结果:

     // stmt is a Statement object
     ((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
 

参数:
current - 下列 Statement 常量之一,这些常量指示将对使用 getResultSet 方法获取的当前 ResultSet 对象发生的操作:Statement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS
返回:
如果下一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在更多的结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者提供的参数不是以下参数之一:Statement.CLOSE_CURRENT_RESULTStatement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS
SQLFeatureNotSupportedException - 如果 DatabaseMetaData.supportsMultipleOpenResults 返回 false,并且 Statement.KEEP_CURRENT_RESULTStatement.CLOSE_ALL_RESULTS 作为参数提供。
从以下版本开始:
1.4
另请参见:
execute(java.lang.String)

getGeneratedKeys

ResultSet getGeneratedKeys()
                           throws SQLException
获取由于执行此 Statement 对象而创建的所有自动生成的键。如果此 Statement 对象没有生成任何键,则返回空的 ResultSet 对象。

注:如果未指定表示自动生成键的列,则 JDBC 驱动程序实现将确定最能表示自动生成键的列。

返回:
包含通过执行此 Statement 对象自动生成的键的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4

executeUpdate

int executeUpdate(String sql,
                  int autoGeneratedKeys)
                  throws SQLException
执行给定的 SQL 语句,并用给定标志通知驱动程序由此 Statement 生成的自动生成键是否可用于获取。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略该标志。

参数:
sql - SQL 数据操作语言(Data Manipulation Language,DML)语句,如 INSERTUPDATEDELETE;或者是不返回任何内容的 SQL 语句,如 DDL 语句。
autoGeneratedKeys - 指示自动生成的键是否可用于获取的标志;以下常量之一:Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
返回:
(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数 (2) 对于不返回任何内容的 SQL 语句,返回 0
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,给定的 SQL 语句返回 ResultSet 对象,或者给定的常量不是允许的常量之一
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持带 Statement.RETURN_GENERATED_KEYS 常量的此方法
从以下版本开始:
1.4

executeUpdate

int executeUpdate(String sql,
                  int[] columnIndexes)
                  throws SQLException
执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。此数组包含目标表中的列的索引,该目标表包含应该可获取的自动生成的键。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略该数组。

参数:
sql - SQL 数据操作语言 (DML) 语句,如 INSERTUPDATEDELETE;或者不返回任何内容的 SQL 语句,如 DDL 语句。
columnIndexes - 指示应该从插入行返回列的列索引数组
返回:
(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数 (2) 对于不返回任何内容的 SQL 语句,返回 0
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,SQL 语句返回 ResultSet 对象,或者提供给此方法的第二个参数不是其元素为有效列索引的 int 数组
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4

executeUpdate

int executeUpdate(String sql,
                  String[] columnNames)
                  throws SQLException
执行给定的 SQL 语句,并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。此数组包含目标表中的列的名称,该目标表包含应该可获取的自动生成的键。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略该数组。

参数:
sql - SQL 数据操作语言 (DML) 语句,如 INSERTUPDATEDELETE;或者不返回任何内容的 SQL 语句,如 DDL 语句。
columnNames - 应该从插入行返回的列的名称数组
返回:
或者为 INSERTUPDATEDELETE 语句,或者为 0,表示不返回任何内容的 SQL 语句
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,SQL 语句返回 ResultSet 对象,或者提供给此方法的第二个参数不是其元素为有效列名称的 String 数组
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4

execute

boolean execute(String sql,
                int autoGeneratedKeys)
                throws SQLException
执行给定的 SQL 语句(该语句可能返回多个结果),并通知驱动程序所有自动生成的键都应该可用于获取。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略此信号。

在某些(不常见)情形下,单个 SQL 语句可能返回多个结果集合和/或更新计数。这一点通常可以忽略,除非正在 (1) 执行已知可能返回多个结果的存储过程或者 (2) 动态执行未知 SQL 字符串。

execute 方法执行 SQL 语句并指示第一个结果的形式。然后,必须使用方法 getResultSetgetUpdateCount 来获取结果,使用 getMoreResults 来移动后续结果。

参数:
sql - 任何 SQL 语句
autoGeneratedKeys - 指示是否应该使用 getGeneratedKeys 方法使自动生成的键可用于获取的常量;以下常量之一:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS
返回:
如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者提供给此方法的第二个参数不是 Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持带 Statement.RETURN_GENERATED_KEYS 常量的此方法
从以下版本开始:
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 语句并指示第一个结果的形式。然后,必须使用方法 getResultSetgetUpdateCount 来获取结果,使用 getMoreResults 来移动后续结果。

参数:
sql - 任何 SQL 语句
columnIndexes - 通过调用方法 getGeneratedKeys 应该可用于获取的插入行中的列索引数组
返回:
如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者传递给此方法的 int 数组中的元素不是有效的列索引
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4
另请参见:
getResultSet(), getUpdateCount(), getMoreResults()

execute

boolean execute(String sql,
                String[] columnNames)
                throws SQLException
执行给定的 SQL 语句(该语句可能返回多个结果),并通知驱动程序在给定数组中指示的自动生成的键应该可用于获取。此数组包含目标表中的列的名称,而该目标表包含应该使其可用的自动生成的键。如果该 SQL 语句不是 INSERT 语句,或者不是可以返回自动生成键的 SQL 语句(这些语句的列表是特定于供应商的),则驱动程序将忽略该数组。

在某些(不常见)情形下,单个 SQL 语句可能返回多个结果集合和/或更新计数。这一点通常可以忽略,除非正在 (1) 执行已知可能返回多个结果的存储过程或者 (2) 动态执行未知 SQL 字符串。

execute 方法执行 SQL 语句并指示第一个结果的形式。然后,必须使用方法 getResultSetgetUpdateCount 来获取结果,使用 getMoreResults 来移动后续结果。

参数:
sql - 任何 SQL 语句
columnNames - 通过调用方法 getGeneratedKeys 应该可用于获取的插入行中的列名称数组
返回:
如果下一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在更多结果,则返回 false
抛出:
SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者传递给此方法的 String 数组的元素不是有效的列名称
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4
另请参见:
getResultSet(), getUpdateCount(), getMoreResults(), getGeneratedKeys()

getResultSetHoldability

int getResultSetHoldability()
                            throws SQLException
获取此 Statement 对象生成的 ResultSet 对象的结果集合可保存性。

返回:
ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMIT
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
从以下版本开始:
1.4

isClosed

boolean isClosed()
                 throws SQLException
获取是否已关闭了此 Statement 对象。如果已经对它调用了 close 方法,或者它自动关闭,则 Statement 已关闭。

返回:
如果此 Statement 对象关闭,则返回 true;如果它仍是打开的,则返回 false
抛出:
SQLException - 如果发生数据库访问错误
从以下版本开始:
1.6

setPoolable

void setPoolable(boolean poolable)
                 throws SQLException
请求将 Statement 池化或非池化。指定值是语句池实现的一个提示,指示应用程序是否希望语句被池化。关于是否使用该提示,由语句池管理器决定。

语句的可池化的值对驱动程序实现的内部语句缓存以及应用程序服务器和其他应用程序实现的外部语句缓存都适用。

默认情况下,Statement 在创建时不是可池化的,而 PreparedStatementCallableStatement 在创建时是可池化的。

参数:
poolable - 如果为 true,则请求将语句池化;如果为 false,则不池化语句

抛出:
SQLException - 如果在已关闭的 Statement 上调用此方法

从以下版本开始:
1.6

isPoolable

boolean isPoolable()
                   throws SQLException
返回指示 Statement 是否是可池化的值。

返回:
如果 Statement 是可池化的,则返回 true;否则返回 false

抛出:
SQLException - 如果在已关闭的 Statement 上调用此方法

从以下版本开始:
1.6

另请参见:
setPoolable(boolean)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策