[java編程]Statement詳解

上傳人:xins****2008 文檔編號:157460855 上傳時間:2022-09-29 格式:DOC 頁數(shù):6 大?。?1.50KB
收藏 版權(quán)申訴 舉報 下載
[java編程]Statement詳解_第1頁
第1頁 / 共6頁
[java編程]Statement詳解_第2頁
第2頁 / 共6頁
[java編程]Statement詳解_第3頁
第3頁 / 共6頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[java編程]Statement詳解》由會員分享,可在線閱讀,更多相關(guān)《[java編程]Statement詳解(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、接口定義   ---Wrapper 所有已知子接口   CallableStatement, PreparedStatement 說明   用于執(zhí)行靜態(tài) SQL 語句并返回它所生成結(jié)果的對象。   在默認(rèn)情況下,同一時間每個?Statement?對象在只能打開一個 ResultSet 對象。因此,如果讀取一個 ResultSet 對象與讀取另一個交叉,則這兩個對象必須是由不同的?Statement?對象生成的。如果存在某個語句的打開的當(dāng)前 ResultSet 對象,則?Statement?接口中的所有執(zhí)行方法都會隱式關(guān)閉它。   Statement?對象用于將 SQL

2、 語句發(fā)送到數(shù)據(jù)庫中。實際上有三種?Statement?對象,它們都作為在給定連接上執(zhí)行 SQL 語句的包容器:Statement、PreparedStatement(它從?Statement?繼承而來)和 CallableStatement(它從 PreparedStatement 繼承而來)。它們都專用于發(fā)送特定類型的 SQL 語句:Statement?對象用于執(zhí)行不帶參數(shù)的簡單 SQL 語句;PreparedStatement 對象用于執(zhí)行帶或不帶 IN 參數(shù)的預(yù)編譯 SQL 語句;CallableStatement 對象用于執(zhí)行對數(shù)據(jù)庫已存儲過程的調(diào)用。   Statement?接口

3、提供了執(zhí)行語句和獲取結(jié)果的基本方法。PreparedStatement 接口添加了處理 IN 參數(shù)的方法;而 CallableStatement 添加了處理 OUT 參數(shù)的方法。   有些 DBMS 將已存儲過程中的每條語句視為獨立的語句;而另外一些則將整個過程視為一個復(fù)合語句。在啟用自動提交時,這種差別就變得非常重要,因為它影響什么時候調(diào)用 commit 方法。在前一種情況中,每條語句單獨提交;在后一種情況中,所有語句同時提交。 字段摘要   static int? ?? ?? ?CLOSE_ALL_RESULTS   該常量指示調(diào)用 getMoreResults 時應(yīng)該關(guān)閉以前

4、一直打開的所有 ResultSet 對象。   static int? ?? ?? ?CLOSE_CURRENT_RESULT   該常量指示調(diào)用 getMoreResults 時應(yīng)該關(guān)閉當(dāng)前 ResultSet 對象。   static int? ?? ?? ?EXECUTE_FAILED   該常量指示在執(zhí)行批量語句時發(fā)生錯誤。   static int? ?? ?? ?KEEP_CURRENT_RESULT   該常量指示調(diào)用 getMoreResults 時應(yīng)該關(guān)閉當(dāng)前 ResultSet 對象。   static int? ?? ?? ?NO_GENERATED_KEY

5、S   該常量指示生成的鍵應(yīng)該不可用于獲取。   static int? ?? ?? ?RETURN_GENERATED_KEYS   該常量指示生成的鍵應(yīng)該可用于獲取。   static int? ?? ?? ?SUCCESS_NO_INFO   該常量指示批量語句執(zhí)行成功但不存在受影響的可用行數(shù)計數(shù)。 方法摘要   void? ?? ?? ?addBatch(String sql)   將給定的 SQL 命令添加到此?Statement?對象的當(dāng)前命令列表中。   void? ?? ?? ?cancel()   如果 DBMS 和驅(qū)動程序都支持中止 SQL 語句,則

6、取消此?Statement?對象。   void? ?? ?? ?clearBatch()   清空此?Statement?對象的當(dāng)前 SQL 命令列表。   void? ?? ?? ?clearWarnings()   清除在此?Statement?對象上報告的所有警告。   void? ?? ?? ?close()   立即釋放此?Statement?對象的數(shù)據(jù)庫和 JDBC 資源,而不是等待該對象自動關(guān)閉時發(fā)生此操作。   boolean? ?? ?? ?execute(String sql)   執(zhí)行給定的 SQL 語句,該語句可能返回多個結(jié)果。   boolean?

7、 ?? ?? ?execute(String sql, int autoGeneratedKeys)   執(zhí)行給定的 SQL 語句(該語句可能返回多個結(jié)果),并通知驅(qū)動程序所有自動生成的鍵都應(yīng)該可用于獲取。   boolean? ?? ?? ?execute(String sql, int[] columnIndexes)   執(zhí)行給定的 SQL 語句(該語句可能返回多個結(jié)果),并通知驅(qū)動程序在給定數(shù)組中指示的自動生成的鍵應(yīng)該可用于獲取。   boolean? ?? ?? ?execute(String sql, String[] columnNames)   執(zhí)行給定的 SQL 語

8、句(該語句可能返回多個結(jié)果),并通知驅(qū)動程序在給定數(shù)組中指示的自動生成的鍵應(yīng)該可用于獲取。   int[]? ?? ?? ?executeBatch()   將一批命令提交給數(shù)據(jù)庫來執(zhí)行,如果全部命令執(zhí)行成功,則返回更新計數(shù)組成的數(shù)組。   ResultSet? ?? ?? ?executeQuery(String sql)   執(zhí)行給定的 SQL 語句,該語句返回單個 ResultSet 對象。   int? ?? ?? ?executeUpdate(String sql)   執(zhí)行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任

9、何內(nèi)容的 SQL 語句(如 SQL DDL 語句)。   int? ?? ?? ?executeUpdate(String sql, int autoGeneratedKeys)   執(zhí)行給定的 SQL 語句,并用給定標(biāo)志通知驅(qū)動程序由此?Statement?生成的自動生成鍵是否可用于獲取。   int? ?? ?? ?executeUpdate(String sql, int[] columnIndexes)   執(zhí)行給定的 SQL 語句,并通知驅(qū)動程序在給定數(shù)組中指示的自動生成的鍵應(yīng)該可用于獲取。   int? ?? ?? ?executeUpdate(String sql, S

10、tring[] columnNames)   執(zhí)行給定的 SQL 語句,并通知驅(qū)動程序在給定數(shù)組中指示的自動生成的鍵應(yīng)該可用于獲取。   Connection? ?? ?? ?getConnection()   獲取生成此 Statement 對象的 Connection 對象。   int? ?? ?? ?getFetchDirection()   獲取從數(shù)據(jù)庫表獲取行的方向,該方向是根據(jù)此 Statement 對象生成的結(jié)果集合的默認(rèn)值。      int? ?? ?? ?getFetchSize()   獲取結(jié)果集合的行數(shù),該數(shù)是根據(jù)此 Statement 對象生成的 R

11、esultSet 對象的默認(rèn)獲取大小。   ResultSet? ?? ?? ?getGeneratedKeys()   獲取由于執(zhí)行此 Statement 對象而創(chuàng)建的所有自動生成的鍵。   int? ?? ?? ?getMaxFieldSize()   獲取可以為此 Statement 對象所生成 ResultSet 對象中的字符和二進制列值返回的最大字節(jié)數(shù)。   int? ?? ?? ?getMaxRows()   獲取由此 Statement 對象生成的 ResultSet 對象可以包含的最大行數(shù)。   boolean? ?? ?? ?getMoreResults()

12、  移動到此 Statement 對象的下一個結(jié)果,如果其為 ResultSet 對象,則返回 true,并隱式關(guān)閉利用方法 getResultSet 獲取的所有當(dāng)前 ResultSet 對象。   boolean? ?? ?? ?getMoreResults(int current)   將此 Statement 對象移動到下一個結(jié)果,根據(jù)給定標(biāo)志指定的指令處理所有當(dāng)前 ResultSet 對象;如果下一個結(jié)果為 ResultSet 對象,則返回 true。   int? ?? ?? ?getQueryTimeout()   獲取驅(qū)動程序等待 Statement 對象執(zhí)行的秒數(shù)。

13、  ResultSet? ?? ?? ?getResultSet()   以 ResultSet 對象的形式獲取當(dāng)前結(jié)果。   int? ?? ?? ?getResultSetConcurrency()   獲取此 Statement 對象生成的 ResultSet 對象的結(jié)果集合并發(fā)性。   int? ?? ?? ?getResultSetHoldability()   獲取此 Statement 對象生成的 ResultSet 對象的結(jié)果集合可保存性。   int? ?? ?? ?getResultSetType()   獲取此 Statement 對象生成的 ResultS

14、et 對象的結(jié)果集合類型。      int? ?? ?? ?getUpdateCount()   以更新計數(shù)的形式獲取當(dāng)前結(jié)果;如果結(jié)果為 ResultSet 對象或沒有更多結(jié)果,則返回 -1。   SQLWarning? ?? ?? ?getWarnings()   獲取此 Statement 對象上的調(diào)用報告的第一個警告。   boolean? ?? ?? ?isClosed()   獲取是否已關(guān)閉了此 Statement 對象。   boolean? ?? ?? ?isPoolable()   返回指示 Statement 是否是可池化的值。   void? ??

15、?? ?setCursorName(String name)   將 SQL 指針名稱設(shè)置為給定的 String,后續(xù) Statement 對象的 execute 方法將使用此字符串。   void? ?? ?? ?setEscapeProcessing(boolean enable)   將轉(zhuǎn)義處理設(shè)置為開或關(guān)。      void? ?? ?? ?setFetchDirection(int direction)   向驅(qū)動程序提供關(guān)于方向的提示,在使用此 Statement 對象創(chuàng)建的 ResultSet 對象中將按該方向處理行。   void? ?? ?? ?setFetc

16、hSize(int rows)   為 JDBC 驅(qū)動程序提供一個提示,它提示此 Statement 生成的 ResultSet 對象需要更多行時應(yīng)該從數(shù)據(jù)庫獲取的行數(shù)。   void? ?? ?? ?setMaxFieldSize(int max)   設(shè)置此 Statement 對象生成的 ResultSet 對象中字符和二進制列值可以返回的最大字節(jié)數(shù)限制。   void? ?? ?? ?setMaxRows(int max)   將此 Statement 對象生成的所有 ResultSet 對象可以包含的最大行數(shù)限制設(shè)置為給定數(shù)。   void? ?? ?? ?setPool

17、able(boolean poolable)   請求將 Statement 池化或非池化。   void? ?? ?? ?setQueryTimeout(int seconds)   將驅(qū)動程序等待 Statement 對象執(zhí)行的秒數(shù)設(shè)置為給定秒數(shù)。 Statement 使用案例   1、創(chuàng)建 Statement 對象   建立了到特定數(shù)據(jù)庫的連接之后,就可用該連接發(fā)送 SQL 語句。Statement 對象用 Connection 的方法 createStatement 創(chuàng)建,如下列代碼段中所示:    Connection con = DriverManager

18、.getConnection(url, \"wyjava\", \"wyjava\");   Statement stmt = con.createStatement();   為了執(zhí)行 Statement 對象,被發(fā)送到數(shù)據(jù)庫的 SQL 語句將被作為參數(shù)提供給 Statement 的方法:    ResultSet rs = stmt.executeQuery(\"SELECT a, b, c FROM Table2\");   2、使用 Statement 對象執(zhí)行語句   Statement 接口提供了三種執(zhí)行 SQL 語句的方法:executeQuery、execu

19、teUpdate 和 execute。使用哪一個方法由 SQL 語句所產(chǎn)生的內(nèi)容決定。   方法 executeQuery 用于產(chǎn)生單個結(jié)果集的語句,例如 SELECT 語句。   方法 executeUpdate 用于執(zhí)行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數(shù)據(jù)定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一個整數(shù),指示受影響的行數(shù)(即更新計數(shù))。對于 CREATE TABLE 或 DROP

20、 TABLE 等不操作行的語句,executeUpdate 的返回值總為零。   方法 execute 用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或二者組合的語句。因為多數(shù)程序員不會需要該高級功能,所以本概述后面將在單獨一節(jié)中對其進行介紹。   執(zhí)行語句的所有方法都將關(guān)閉所調(diào)用的 Statement 對象的當(dāng)前打開結(jié)果集(如果存在)。這意味著在重新執(zhí)行 Statement 對象之前,需要完成對當(dāng)前 ResultSet 對象的處理。   應(yīng)注意,繼承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的 executeQuery、executeUpdat

21、e 和 execute 方法。Statement 對象本身不包含 SQL 語句,因而必須給 Statement.execute 方法提供 SQL 語句作為參數(shù)。PreparedStatement 對象并不將 SQL 語句作為參數(shù)提供給這些方法,因為它們已經(jīng)包含預(yù)編譯 SQL 語句。CallableStatement 對象繼承這些方法的 PreparedStatement 形式。對于這些方法的 PreparedStatement 或 CallableStatement 版本,使用查詢參數(shù)將拋出 SQLException。   3、語句完成   當(dāng)連接處于自動提交模式時,其中所執(zhí)行的語句在完成時將自動提交或還原。語句在已執(zhí)行且所有結(jié)果返回時,即認(rèn)為已完成。對于返回一個結(jié)果集的 executeQuery 方法,在檢索完 ResultSet 對象的所有行時該語句完成。對于方法 executeUpdate,當(dāng)它執(zhí)行時語句即完成。但在少數(shù)調(diào)用方法 execute 的情況中,在檢索所有結(jié)果集或它生成的更新計數(shù)之后語句才完成。   4、關(guān)閉 Statement 對象   Statement 對象將由 Java 垃圾收集程序自動關(guān)閉。而作為一種好的編程風(fēng)格,應(yīng)在不需要 Statement 對象時顯式地關(guān)閉它們。這將立即釋放 DBMS 資源,有助于避免潛在的內(nèi)存問題。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!