亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JDBC系列教程(五)---準備語句

2019-11-18 11:28:57
字體:
來源:轉載
供稿:網友

JDBC系列教程(五)---預備語句

PReparedStatement

本概述是從《JDBCTM Database access from javaTM: A Tutorial and Annotated Reference 》這本書中摘引來的。JavaSoft 目前正在預備這本書。這是一本教程,同時也是 JDBC 的重要參考手冊,它將作為 Java 系列的組成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 


6.1 概述
該 PreparedStatement 接口繼續 Statement,并與之在兩方面有所不同: 


PreparedStatement 實例包含已編譯的 SQL 語句。這就是使語句“預備好”。 
包含于 PreparedStatement 對象中的 SQL 語句可具有一個或多個 IN 參數。IN 參數的值在 SQL 語句創建時未被指定。相反的,該語句為每個 IN 參數保留一個問號(“?”)作為占位符。每個問號的值必須在該語句執行之前,通過適當的 setXXX 方法來提供。 

由于 PreparedStatement 對象已預編譯過,所以其執行速度要快于 Statement 對象。因此,多次執行的 SQL 語句經常創建為 PreparedStatement 對象,以提高效率。

作為 Statement 的子類,PreparedStatement 繼續了 Statement 的所有功能。另外它還添加了一整套方法,用于設置發送給數據庫以取代 IN 參數占位符的值。同時,三種方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要參數。這些方法的 Statement 形式(接受 SQL 語句參數的形式)不應該用于 PreparedStatement 對象。


6.1.1 創建 PreparedStatement 對象
以下的代碼段(其中 con 是 Connection 對象)創建包含帶兩個 IN 參數占位符的 SQL 語句的 PreparedStatement 對象: 

PreparedStatement pstmt = con.prepareStatement(
"UPDATE table4 SET m = ? WHERE x = ?");

pstmt 對象包含語句 "UPDATE table4 SET m = ? WHERE x = ?",它已發送給 DBMS,并為執行作好了預備。


6.1.2 傳遞 IN 參數
在執行 PreparedStatement 對象之前,必須設置每個 ? 參數的值。這可通過調用 setXXX 方法來完成,其中 XXX 是與該參數相應的類型。例如,假如參數具有 Java 類型 long,則使用的方法就是 setLong。setXXX 方法的第一個參數是要設置的參數的序數位置,第二個參數是設置給該參數的值。例如,以下代碼將第一個參數設為 123456789,第二個參數設為 100000000: 

pstmt.setLong(1, 123456789);
pstmt.setLong(2, 100000000);

一旦設置了給定語句的參數值,就可用它多次執行該語句,直到調用 clearParameters 方法清除它為止。

在連接的缺省模式下(啟用自動提交),當語句完成時將自動提交或還原該語句。

假如基本數據庫和驅動程序在語句提交之后仍保持這些語句的打開狀態,則同一個 PreparedStatement 可執行多次。假如這一點不成立,那么試圖通過使用 PreparedStatement 對象代替 Statement 對象來提高性能是沒有意義的。

利用 pstmt(前面創建的 PreparedStatement 對象),以下代碼例示了如何設置兩個參數占位符的值并執行 pstmt 10 次。如上所述,為做到這一點,數據庫不能關閉 pstmt。在該示例中,第一個參數被設置為 "Hi"并保持為常數。在 for 循環中,每次都將第二個參數設置為不同的值:從 0 開始,到 9 結束。

pstmt.setString(1, "Hi");
for (int i = 0; i < 10; i++) {
pstmt.setInt(2, i);
int rowCount = pstmt.executeUpdate();
}

6.1.3 IN 參數中數據類型的一致性
setXXX 方法中的 XXX 是 Java 類型。它是一種隱含的 JDBC 類型(一般 SQL 類型),因為驅動程序將把 Java 類型映射為相應的 JDBC 類型(遵循該 JDBC Guide中§8.6.2 “映射 Java 和 JDBC 類型”表中所指定的映射),并將該 JDBC 類型發送給數據庫。例如,以下代碼段將 PreparedStatement 對象 pstmt 的第二個參數設置為 44,Java 類型為 short: 

pstmt.setShort(2, 44);

驅動程序將 44 作為 JDBC SMALLINT 發送給數據庫,它是 Java short 類型的標準映射。

程序員的責任是確保將每個 IN 參數的 Java 類型映射為與數據庫所需的 JDBC 數據類型兼容的 JDBC 類型。不妨考慮數據庫需要 JDBC SMALLINT 的情況。假如使用方法 setByte ,則驅動程序將 JDBC TINYINT 發送給數據庫。這是可行的,因為許多數據庫可從一種相關的類型轉換為另一種類型,并且通常 TINYINT 可用于 SMALLINT 適用的任何地方。然而,對于要適用于盡可能多的數據庫的應用程序,最好使用與數據庫所需的確切的 JDBC 類型相應的 Java 類型。假如所需的 JDBC 類型是 SMALLINT,則使用 setShort 代替 setByte 將使應用程序的可移植性更好。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影在线观看网站| 国产精品女主播视频| 91精品综合视频| 欧美一区二区三区免费视| 亚洲国产一区二区三区四区| 欧美性xxxxxxx| 一区国产精品视频| 日韩在线欧美在线国产在线| 亚洲男人天堂手机在线| 午夜欧美大片免费观看| 国外成人在线直播| 亚洲电影在线观看| 欧美激情精品久久久久久免费印度| 久久久人成影片一区二区三区| 国产视频999| 在线播放国产一区中文字幕剧情欧美| 欧美性猛交xxxx乱大交蜜桃| 国产欧美va欧美va香蕉在| 欧美精品久久久久久久久久| 亚洲精品一区中文字幕乱码| 日韩欧美福利视频| 午夜免费在线观看精品视频| 欧美精品九九久久| 97高清免费视频| 亚洲精品福利资源站| 久久精品国产亚洲| 日韩成人av在线| 欧美视频一区二区三区…| 91精品国产免费久久久久久| 97精品国产aⅴ7777| 精品视频中文字幕| 一区二区三区日韩在线| 国产91热爆ts人妖在线| 亚洲天堂av综合网| 国产精品一区专区欧美日韩| 精品久久久久久亚洲国产300| 国产主播喷水一区二区| 精品成人国产在线观看男人呻吟| 国产精品成人免费电影| 日韩精品极品视频免费观看| 国产精品久久久久久中文字| 久久久亚洲成人| 久久精品亚洲精品| 成人久久精品视频| 国产精品夜间视频香蕉| 国产精品久久精品| 一本大道亚洲视频| 日韩国产精品一区| 91av网站在线播放| 亚洲福利视频专区| 欧美激情一二三| 国产精品美女免费| 91久久久精品| 亚洲国产精品久久久久久| 亚洲男人天堂网| 欧美疯狂性受xxxxx另类| 久久全国免费视频| 欧美性猛交xxxx乱大交| 国模视频一区二区三区| 亚洲精品久久久久国产| 国产一区二区三区三区在线观看| 国产精品久久久久久久av大片| 欧美综合第一页| 欧美精品中文字幕一区| 亚洲高清不卡av| 日韩精品久久久久久久玫瑰园| 韩国日本不卡在线| 色哟哟网站入口亚洲精品| 亚洲精品日产aⅴ| 国产精品www| 亚洲欧美一区二区三区在线| 欧美午夜美女看片| 久久久久久高潮国产精品视| 久久免费视频网站| 91亚洲va在线va天堂va国| 尤物tv国产一区| 91精品久久久久久久久久久久久| 伊人伊成久久人综合网小说| 国产视频精品xxxx| 日韩免费黄色av| 欧美不卡视频一区发布| 欧美在线视频一区| 九九热99久久久国产盗摄| 国产成人精品av在线| 一本色道久久88亚洲综合88| 91大神在线播放精品| 在线成人一区二区| 欧美精品成人91久久久久久久| 精品亚洲国产视频| 九九热精品视频在线播放| 亚洲毛片在线看| 91av免费观看91av精品在线| 欧美亚洲另类激情另类| 久久亚洲综合国产精品99麻豆精品福利| 国产精品日韩欧美| 欧美性xxxxxxxxx| 亚洲午夜久久久久久久| 中文字幕国内精品| 久久99久久亚洲国产| 久久人人爽人人爽人人片亚洲| 日韩欧美一区二区三区久久| 欧美激情一二三| 国产一区二区三区在线观看网站| 久久久久久久久久久成人| 国产精品影院在线观看| 亚洲精品av在线播放| 日本一欧美一欧美一亚洲视频| 亚洲男人天堂手机在线| 色狠狠av一区二区三区香蕉蜜桃| 亚洲白虎美女被爆操| 亚洲第一福利网| 精品视频久久久久久久| 亚洲网址你懂得| 久久久99久久精品女同性| 欧美在线激情网| 国产成人福利夜色影视| 91午夜在线播放| 一个色综合导航| 久久精品青青大伊人av| 日韩国产精品视频| 欧美中文字幕在线播放| 一区二区福利视频| 色婷婷亚洲mv天堂mv在影片| 97色在线播放视频| 国产精品免费视频xxxx| 色妞一区二区三区| 日韩一区视频在线| 欧美在线视频在线播放完整版免费观看| 国产精品一区电影| 免费不卡在线观看av| 成人精品一区二区三区电影免费| 国产精品永久免费| 国产精品美女在线| 成人黄色片在线| 欧美高清在线观看| 国产综合色香蕉精品| www.欧美视频| 亚洲人成网站777色婷婷| 亚洲精品国精品久久99热一| 国产做受高潮69| 日韩高清电影好看的电视剧电影| 亚洲国产成人在线播放| 亚洲人成电影网站| 精品国偷自产在线视频| 免费av一区二区| 亚洲精品丝袜日韩| 日韩精品在线观| 欧美理论电影在线观看| 欧美日韩高清区| 欧美国产日韩xxxxx| 91超碰caoporn97人人| 日本视频久久久| 国产一区二区三区视频在线观看| 亚洲乱码一区av黑人高潮| 国产精品女人久久久久久| 97国产在线观看| 亚洲综合最新在线| 在线亚洲男人天堂| 国产免费成人av| 日韩av中文字幕在线播放| 久久久久久亚洲精品| 亚洲自拍高清视频网站| 在线日韩av观看| 国产精品视频不卡|