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

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

JDBC系列教程(六)---可調用語句

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

JDBC系列教程(六)---可調用語句

CallableStatement

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


7.1 概述
CallableStatement 對象為所有的 DBMS 提供了一種以標準形式調用已儲存過程的方法。已儲存過程儲存在數據庫中。對已儲存過程的調用是 CallableStatement 對象所含的內容。這種調用是用一種換碼語法來寫的,有兩種形式:一種形式帶結果參數,另一種形式不帶結果參數(有關換碼語法的信息,參見第 4 節“語句”)。結果參數是一種輸出 (OUT) 參數,是已儲存過程的返回值。兩種形式都可帶有數量可變的輸入(IN 參數)、輸出(OUT 參數)或輸入和輸出(INOUT 參數)的參數。問號將用作參數的占位符。

在 JDBC 中調用已儲存過程的語法如下所示。注重,方括號表示其間的內容是可選項;方括號本身并不是語法的組成部份。

{call 過程名[(?, ?, ...)]}

返回結果參數的過程的語法為: 

{? = call 過程名[(?, ?, ...)]}

不帶參數的已儲存過程的語法類似: 

{call 過程名}

通常,創建 CallableStatement 對象的人應當知道所用的 DBMS 是支持已儲存過程的,并且知道這些過程都是些什么。然而,假如需要檢查,多種 DatabaseMetaData 方法都可以提供這樣的信息。例如,假如 DBMS 支持已儲存過程的調用,則 supportsStoredPRocedures 方法將返回 true,而 getProcedures 方法將返回對已儲存過程的描述。

CallableStatement 繼續 Statement 的方法(它們用于處理一般的 SQL 語句),還繼續了 PreparedStatement 的方法(它們用于處理 IN 參數)。CallableStatement 中定義的所有方法都用于處理 OUT 參數或 INOUT 參數的輸出部分:注冊 OUT 參數的 JDBC 類型(一般 SQL 類型)、從這些參數中檢索結果,或者檢查所返回的值是否為 JDBC NULL。


7.1.1 創建 CallableStatement 對象
CallableStatement 對象是用 Connection 方法 prepareCall 創建的。下例創建 CallableStatement 的實例,其中含有對已儲存過程 getTestData 調用。該過程有兩個變量,但不含結果參數: 

CallableStatement cstmt = con.prepareCall(
"{call getTestData(?, ?)}");

其中 ? 占位符為 IN、 OUT 還是 INOUT 參數,取決于已儲存過程 getTestData。


7.1.2 IN 和 OUT 參數
將 IN 參數傳給 CallableStatement 對象是通過 setXXX 方法完成的。該方法繼續自 PreparedStatement。所傳入參數的類型決定了所用的 setXXX 方法(例如,用 setFloat 來傳入 float 值等)。

假如已儲存過程返回 OUT 參數,則在執行 CallableStatement 對象以前必須先注冊每個 OUT 參數的 JDBC 類型(這是必需的,因為某些 DBMS 要求 JDBC 類型)。注冊 JDBC 類型是用 registerOutParameter 方法來完成的。語句執行完后,CallableStatement 的 getXXX 方法將取回參數值。正確的 getXXX 方法是為各參數所注冊的 JDBC 類型所對應的 Java 類型(從 JDBC 類型到 Java 類型的標準映射見 8.6.1 節中的表)。換言之, registerOutParameter 使用的是 JDBC 類型(因此它與數據庫返回的 JDBC 類型匹配),而 getXXX 將之轉換為 Java 類型。

作為示例,下述代碼先注冊 OUT 參數,執行由 cstmt 所調用的已儲存過程,然后檢索在 OUT 參數中返回的值。方法 getByte 從第一個 OUT 參數中取出一個 Java 字節,而 getBigDecimal 從第二個 OUT 參數中取出一個 BigDecimal 對象(小數點后面帶三位數): 

CallableStatement cstmt = con.prepareCall(
"{call getTestData(?, ?)}");
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.registerOutParameter(2, java.sql.Types.DECIMAL, 3);
cstmt.executeQuery();
byte x = cstmt.getByte(1);
java.math.BigDecimal n = cstmt.getBigDecimal(2, 3);

CallableStatement 與 ResultSet 不同,它不提供用增量方式檢索大 OUT 值的非凡機制。


7.1.3 INOUT 參數
既支持輸入又接受輸出的參數(INOUT 參數)除了調用 registerOutParameter 方法外,還要求調用適當的 setXXX 方法(該方法是從 PreparedStatement 繼續來的)。setXXX 方法將參數值設置為輸入參數,而 registerOutParameter 方法將它的 JDBC 類型注冊為輸出參數。setXXX 方法提供一個 Java 值,而驅動程序先把這個值轉換為 JDBC 值,然后將它送到數據庫中。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内揄拍国内精品少妇国语| 日本精品中文字幕| 国产精品999999| 精品中文字幕在线| 亚洲一区二区三区香蕉| 中文字幕亚洲激情| 俺去啦;欧美日韩| 亚洲级视频在线观看免费1级| 久久免费国产精品1| 国产综合香蕉五月婷在线| 久热精品视频在线观看| 欧美成年人视频| 国产精品免费一区二区三区都可以| 中文字幕日韩在线观看| 亚洲国产精品小视频| 日韩国产精品一区| 一区二区国产精品视频| 欧美性生交大片免费| 欧美性xxxx极品高清hd直播| 国产精品一区二区女厕厕| 亚洲最大激情中文字幕| 一区二区三区视频观看| 欧美综合一区第一页| 宅男66日本亚洲欧美视频| 欧美香蕉大胸在线视频观看| 日韩精品免费在线| 午夜精品久久久久久久白皮肤| 色偷偷av一区二区三区| 亚洲黄色www网站| 久久久久久久久久久网站| 亚洲精品国产成人| 亚洲精品美女在线观看| 精品国产老师黑色丝袜高跟鞋| 精品美女永久免费视频| 欧美视频在线视频| 成人夜晚看av| 久久精视频免费在线久久完整在线看| 亚洲高清免费观看高清完整版| 久久久久日韩精品久久久男男| 欧美电影免费观看大全| 精品久久国产精品| 日日噜噜噜夜夜爽亚洲精品| 久久久中精品2020中文| 亚洲午夜女主播在线直播| 亚洲黄色在线观看| 国产精品爱啪在线线免费观看| 性色av一区二区三区红粉影视| 中文字幕日韩欧美在线视频| 精品视频在线播放免| 欧美电影免费观看网站| 欧美视频在线免费| 午夜精品久久久久久久白皮肤| 日韩精品在线第一页| 国产欧美一区二区三区四区| 国产一区二区黄| 久久免费视频在线| 日韩av免费观影| 992tv在线成人免费观看| 久久手机精品视频| 欧美乱大交xxxxx另类电影| 亚洲视频在线视频| 91极品女神在线| 中文字幕亚洲在线| 91亚洲永久免费精品| 日韩av影片在线观看| 国产精品成人品| 国产精品视频导航| 日韩在线国产精品| 日韩av在线影院| www国产精品视频| 亚洲激情久久久| 国产精品欧美一区二区| 亚洲国产欧美精品| 北条麻妃一区二区在线观看| 成人在线视频福利| 欧美一区二区三区……| 日韩在线免费高清视频| 久久久久久91香蕉国产| 国产精品69久久久久| 欧美成人精品在线| 丰满岳妇乱一区二区三区| 亚洲人a成www在线影院| 在线播放精品一区二区三区| 久久久精品中文字幕| 麻豆国产va免费精品高清在线| 久久久这里只有精品视频| 久久精品一区中文字幕| 中文字幕成人精品久久不卡| 国产一区二区三区在线观看视频| 久久久av网站| 欧美激情视频播放| 欧美性生交xxxxx久久久| 亚洲精品一区av在线播放| 国产精品成人v| 久久久久免费精品国产| 亚洲精品美女网站| 国模吧一区二区三区| 中文字幕日韩av综合精品| 97在线精品国自产拍中文| 欧美激情a∨在线视频播放| 岛国av午夜精品| 最近中文字幕mv在线一区二区三区四区| 日韩精品视频免费在线观看| 成人信息集中地欧美| 精品电影在线观看| 日韩av三级在线观看| 色中色综合影院手机版在线观看| 91亚洲精品在线观看| 午夜免费日韩视频| 久久全国免费视频| 久久99热这里只有精品国产| 日韩在线视频二区| 亚洲免费一级电影| 欧美在线观看日本一区| 欧美日韩中文字幕日韩欧美| 成人av番号网| 久久久久www| 国产97免费视| 欧美日韩高清在线观看| 欧美日韩中文字幕在线| 国产高清视频一区三区| 久久久成人的性感天堂| 一区二区三区精品99久久| 亚洲黄色有码视频| 97在线视频精品| 国产精品三级网站| 免费成人高清视频| 国产成人精品av在线| 国产精品电影在线观看| 欧美午夜影院在线视频| 97av在线影院| 国产欧洲精品视频| 亚洲国产成人精品久久久国产成人一区| 北条麻妃一区二区三区中文字幕| 欧美一区二区视频97| 欧美丝袜第一区| 亚洲精品国产精品自产a区红杏吧| 国产精品成人免费视频| 欧美激情精品久久久久久久变态| 午夜伦理精品一区| 91色精品视频在线| 国产精品久久久久久亚洲调教| 正在播放欧美一区| 性欧美xxxx交| 亚洲999一在线观看www| 亚洲欧美日韩中文在线制服| 国产精品久久综合av爱欲tv| 国产激情综合五月久久| 国产成人av在线| 色一情一乱一区二区| 欧美精品在线免费观看| 91精品国产91久久| 国产ts人妖一区二区三区| 91超碰caoporn97人人| 亚洲国产精品专区久久| 国产99视频精品免视看7| 91免费看片网站| 国产成人免费91av在线| 夜夜嗨av色一区二区不卡| 日韩激情片免费| 久久久国产成人精品| 亚洲天堂男人的天堂| 中文字幕亚洲在线| 91禁外国网站|