public interface Statement
Statement 對象用於執行一條靜態的 SQL 語句並獲取它產生的結果。
任何時侯每條語句僅能打開一個 ResultSet 。因此,如果對一個 ResultSet 的讀出與另一個 ResultSet 的讀出交錯,那麼每個 ResultSet 一定由不同的語句產生。如果有 ResultSet 存在,所有的語句執行方法都隱式關閉當前的 ResultSet 。
參見:
createStatement, ResultSet
方法索引
cancel()
Cancel 用於一個線程取消另一個線程正在執行的一條語句。
clearWarnings()
此調用完成之後,getWarnings 返回 null 直到為該語句報告了一個新的警告。
close()
在很多情況下,語句自動關閉時立即釋放該語句所在數據庫和 JDBC 資源是需要的;close 方法就是這種立即釋放方法。
execute(String)
執行一條可能返回多個結果的 SQL 語句。
executeQuery(String)
執行一條返回單個 ResultSet 的 SQL 語句。
executeUpdate(String)
執行一條 SQL INSERT、UPDATE 或 DELETE 語句。
getMaxFieldSize()
maxFieldSize 限制(以字節為單位)是可為任何列值返回的數據的最大數量;它僅適用於 BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR 和 LONGVARCHAR 列。
getMaxRows()
maxRows 限制是 ResultSet 可包含的最大行數。
getMoreResults()
getMoreResults 可使得移到語句的下一個結果。
getQueryTimeout()
queryTimeout 限制是驅動程序等待一條語句執行的秒數。
getResultSet()
getResultSet 返回 ResultSet 的當前結果。
getUpdateCount()
getUpdateCount 返回當前結果作為一個更新數量;如果結果是一個 ResultSet 或沒有其他結果,返回 -1。
getWarnings()
返回由這條語句的調用報告的第一個警告。
setCursorName(String)
setCursorname 定義了由後繼的語句執行方法使用的 SQL 游標名。
setEscapeProcessing(boolean)
如果打開換碼掃描(缺省), 驅動程序在向數據庫發送 SQL 語句之前做換碼替換。
setMaxFieldSize(int)
maxFieldSize 限制(以字節為單位)設置為任何列值返回的數據的最大數目;它僅適用於 BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR 和 LONGVARCHAR 域。
setMaxRows(int)
maxRows 限制限制 ResultSet 可包含的最大行數。
setQueryTimeout(int)
queryTimeout 限制是驅動程序等待一條語句執行的秒數。
方法
executeQuery
public abstract ResultSet executeQuery(String sql) throws SQLException
執行一條返回單個 ResultSet 的 SQL 語句。
參數:
sql - 典型地,這是靜態的 SQL SELECT 語句
返回值:
包含由查詢產生的數據的 ResultSet;永遠不為 null 。
拋出: SQLException
如果發生了數據訪問錯誤。
executeUpdate
public abstract int executeUpdate(String sql) throws SQLException
執行一條 SQL INSERT、UPDATE 或 DELETE 語句。 另外,可執行沒有返回值的 SQL 語句,如 SQL DDL 語句。
參數:
sql - 一條 SQL INSERT、UPDATE 或 DELETE 語句或沒有返回值的 SQL 語句
返回值:
如果執行 INSERT、UPDATE 或 DELETE 語句返回行數或者為執行沒有返回值的語句返回 0
拋出: SQLException
如果發生了數據訪問錯誤。
close
public abstract void close() throws SQLException
在很多情況下,在語句自動關閉時立即釋放該語句的數據庫和 JDBC 資源是需要的;close 方法就是這種立即釋放方法。
注意: 當語句收集到垃圾箱,它被自動關閉。如果一條語句關閉,那麼它的 ResultSet 如果存在的話也將被關閉。
拋出: SQLException
如果發生了數據訪問錯誤。
getMaxFieldSize
public abstract int getMaxFieldSize() throws SQLException
maxFieldSize 限制(以字節為單位)是可為任何列值返回的數據的最大數量;它僅適用於 BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR 和 LONGVARCHAR 列。如果超過這個限制,超過的數據將被拋棄。
返回值:
當前的最大列尺寸限制;零表示無限制。
拋出: SQLException
如果發生了數據訪問錯誤。
setMaxFieldSize
public abstract void setMaxFieldSize(int max) throws SQLException
maxFieldSize 限制(以字節為單位)是為任何列值返回的數據的最大數量;它僅適用於 BINARY、VARBINARY、LONGVARBINARY、CHAR、VARCHAR 和 LONGVARCHAR 域。如果超過這個限制,超過的數據將被丟棄。為了最大的可移植性,通常使用大於 256 的值。
參數:
max - 新的最大列尺寸限制;零表示無限制
拋出: SQLException
如果發生了數據訪問錯誤。
getMaxRows
public abstract int getMaxRows() throws SQLException
maxRows 限制是 ResultSet 可包含的最大行數。 如果超過限制,超過的行將被丟棄。
返回值:
當前的最大行限制;零表示沒有限制
拋出: SQLException
如果發生了數據訪問錯誤。
setMaxRows
public abstract void setMaxRows(int max) throws SQLException
maxRows 限制用來限制 ResultSet 可包含的最大行數。如果超過這個限制,超過的行將被丟棄。
參數:
max - 新的最大行限制;零表示無限制
拋出: SQLException
如果發生了數據訪問錯誤。
setEscapeProcessing
public abstract void setEscapeProcessing(boolean enable) throws SQLException
如果不作掃描是打開的(缺省值), 驅動程序在向數據庫發送 SQL 語句之前將不作替換。 注意:因為準備好的語句通常在此調用之前進行了語法分析,所以對準備好的語句禁用不作處理是無效的。
參數:
enable - true 表示啟用; false 表示禁用
拋出: SQLException
如果發生了數據訪問錯誤。
getQueryTimeout
public abstract int getQueryTimeout() throws SQLException
queryTimeout 限制是驅動程序等待一條語句執行的秒數。 如果超過這個限制,則拋出 SQLException 。
返回值:
以秒記數的當前查詢的超時限制;零表示無限制
拋出: SQLException
如果發生了數據訪問錯誤。
setQueryTimeout
public abstract void setQueryTimeout(int seconds) throws SQLException
queryTimeout 限制是驅動程序等待一條語句執行的秒數。 如果超過這個限制,則拋出 SQLException 。
參數:
seconds - 以秒記數的新查詢的超時限制;零表示無限制
拋出: SQLException
如果發生了數據訪問錯誤。
cancel
public abstract void cancel() throws SQLException
Cancel 用於一個線程取消另一個線程正在執行的一條語句。
拋出: SQLException
如果發生了數據訪問錯誤。
getWarnings
public abstract SQLWarning getWarnings() throws SQLException
返回由對這條語句的調用報告的第一個警告。語句的執行方法清除它的 SQLWarning 鏈。後繼的語句警告將被鏈接到這個 SQLWarning 上。
每次執行語句時,警告鏈被自動清除。
注意: 如果正處理一個 ResultSet,則任何與讀 ResultSet 相關的警告將連接到 ResultSet 對象上。
返回值:
第一個 SQLWarning 或 null
拋出: SQLException
如果發生了數據訪問錯誤。
clearWarnings
public abstract void clearWarnings() throws SQLException
此調用完成之後,getWarnings 返回 null, 直到該語句產生了一個新警告為止。
拋出: SQLException
如果發生了數據訪問錯誤。
setCursorName
public abstract void setCursorName(String name) throws SQLException
setCursorname 定義了由後繼語句執行方法使用的 SQL 游標名。 該名字可用在 SQL 定位的 update/delete 語句中,來識別由該語句生成的 ResultSet 中的當前行。如果數據庫不支持定位的 update/delete, 該方法無用。
注意: 由定義可知,定位的 update/delete 執行必須由不同的語句完成,而不是由生成用於定位的 ResultSet 的語句來執行。而且,游標名在連接中必須是唯一的。
參數:
name - 新的游標名。
拋出: SQLException
如果發生了數據訪問錯誤。
execute
public abstract boolean execute(String sql) throws SQLException
執行一條可能返回多個結果的 SQL 語句。 在某些(非正常)環境下,一個單獨的 SQL 語句可能返回多個結果集和/或更新數量。通常,您可忽略該方法,除非您正執行事先知道可能會返回多個結果集的存儲過程,或者您動態地執行一個未知的 SQL 字符串。 "execute"、"getMoreResults"、"getResultSet" 和"getUpdateCount" 方法可使得瀏覽多條結果。 "execute" 方法執行一條 SQL 語句並指示最初的結果形式。可使用 getResultSet 或 getUpdateCount
方法來檢索結果,及 getMoreResults 方法來移動到任何後繼的結果。
參數:
sql - 任何 SQL 語句
返回值:
如果下一個結果是 ResultSet ,返回 true;如果它是一個更新數量或沒有其它結果,返回 false。
拋出: SQLException
如果發生了數據訪問錯誤。
參見:
getResultSet, getUpdateCount, getMoreResults
getResultSet
public abstract ResultSet getResultSet() throws SQLException
getResultSet 返回當前結果作為 ResultSet 。對每個結果只應調用該方法一次。
返回值:
作為 ResultSet 的當前結果;如果沒有其它結果返回 null
拋出: SQLException
如果發生了數據訪問錯誤。
參見:
execute
getUpdateCount
public abstract int getUpdateCount() throws SQLException
getUpdateCount 返回當前結果作為一個更新數量;如果結果是一個 ResultSet 或沒有其他結果,返回 -1。 對每個結果只應調用該方法一次。
返回值:
作為更新數量的當前結果;如果沒有其它結果則返回 null
拋出: SQLException
如果發生了數據訪問錯誤。
參見:
execute
getMoreResults
public abstract boolean getMoreResults() throws SQLException
getMoreResults 移到語句的下一個結果。 如果結果是一個 ResultSet ,返回 true 。 getMoreResults 也隱式關閉用 getResultSet 獲得的當前 ResultSet。如果 (!getMoreResults() && (getUpdateCount() == -1) 則沒有下一結果。
返回值:
如果下一個結果是 ResultSet ,返回 true;如果它是一個更新數量或沒有其它結果,返回 false。
拋出: SQLException
如果發生了數據訪問錯誤。
參見:
execute