JavaTM 2 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only