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