亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

數(shù)據(jù)庫execute用法 executesql方法


數(shù)據(jù)庫execute用法 executesql方法

文章插圖
Statement 中execute、executeUpdate、executeQuery這三者的區(qū)別Statement 接口提供了三種執(zhí)行 SQL 語句的方法:executeQuery、executeUpdate 和 execute 。使用哪一個方法由 SQL 語句所產(chǎn)生的內(nèi)容決定 。
方法executeQuery
用于產(chǎn)生單個結(jié)果集的語句,例如 SELECT 語句 。被使用最多的執(zhí)行 SQL 語句的方法是 executeQuery 。這個方法被用來執(zhí)行 SELECT 語句,它幾乎是使用最多的 SQL 語句 。
方法executeUpdate
用于執(zhí)行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(數(shù)據(jù)定義語言)語句,例如 CREATE TABLE 和 DROP TABLE 。INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列 。executeUpdate 的返回值是一個整數(shù),指示受影響的行數(shù)(即更新計數(shù)) 。對于 CREATE TABLE 或 DROP TABLE 等不操作行的語句,executeUpdate 的返回值總為零 。
使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (數(shù)據(jù)定義語言)語句 。創(chuàng)建表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執(zhí)行 。你也可以從它的名字里看出,方法 executeUpdate 也被用于執(zhí)行更新表 SQL 語句 。實際上,相對于創(chuàng)建表來說,executeUpdate 用于更新表的時間更多,因為表只需要創(chuàng)建一次,但經(jīng)常被更新 。
方法execute:
用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或二者組合的語句 。因為多數(shù)程序員不會需要該高級功能
execute方法應(yīng)該僅在語句能返回多個ResultSet對象、多個更新計數(shù)或ResultSet對象與更新計數(shù)的組合時使用 。當(dāng)執(zhí)行某個已存儲過程或動態(tài)執(zhí)行未知 SQL 字符串(即應(yīng)用程序程序員在編譯時未知)時,有可能出現(xiàn)多個結(jié)果的情況,盡管這種情況很少見 。
因為方法 execute 處理非常規(guī)情況,所以獲取其結(jié)果需要一些特殊處理并不足為怪 。例如,假定已知某個過程返回兩個結(jié)果集,則在使用方法 execute 執(zhí)行該過程后,必須調(diào)用方法 getResultSet 獲得第一個結(jié)果集,然后調(diào)用適當(dāng)?shù)?getXXX 方法獲取其中的值 。要獲得第二個結(jié)果集,需要先調(diào)用 getMoreResults 方法,然后再調(diào)用 getResultSet 方法 。如果已知某個過程返回兩個更新計數(shù),則首先調(diào)用方法 getUpdateCount,然后調(diào)用 getMoreResults,并再次調(diào)用 getUpdateCount 。
對于不知道返回內(nèi)容,則情況更為復(fù)雜 。如果結(jié)果是 ResultSet 對象,則方法 execute 返回 true;如果結(jié)果是 Java int,則返回 false 。如果返回 int,則意味著結(jié)果是更新計數(shù)或執(zhí)行的語句是 DDL 命令 。在調(diào)用方法 execute 之后要做的第一件事情是調(diào)用 getResultSet 或 getUpdateCount 。調(diào)用方法 getResultSet 可以獲得兩個或多個 ResultSet 對象中第一個對象;或調(diào)用方法 getUpdateCount 可以獲得兩個或多個更新計數(shù)中第一個更新計數(shù)的內(nèi)容 。
當(dāng) SQL 語句的結(jié)果不是結(jié)果集時,則方法 getResultSet 將返回 null 。這可能意味著結(jié)果是一個更新計數(shù)或沒有其它結(jié)果 。在這種情況下,判斷 null 真正含義的唯一方法是調(diào)用方法 getUpdateCount,它將返回一個整數(shù) 。這個整數(shù)為調(diào)用語句所影響的行數(shù);如果為 -1 則表示結(jié)果是結(jié)果集或沒有結(jié)果 。如果方法 getResultSet 已返回 null(表示結(jié)果不是 ResultSet 對象),則返回值 -1 表示沒有其它結(jié)果 。也就是說,當(dāng)下列條件為真時表示沒有結(jié)果(或沒有其它結(jié)果):
((stmt.getResultSet() == null) && (stmt.getUpdateCount() == -1))
如果已經(jīng)調(diào)用方法 getResultSet 并處理了它返回的 ResultSet 對象,則有必要調(diào)用方法 getMoreResults 以確定是否有其它結(jié)果集或更新計數(shù) 。如果 getMoreResults 返回 true,則需要再次調(diào)用 getResultSet 來檢索下一個結(jié)果集 。如上所述,如果 getResultSet 返回 null,則需要調(diào)用 getUpdateCount 來檢查 null 是表示結(jié)果為更新計數(shù)還是表示沒有其它結(jié)果 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: