婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > JDBCTM 指南:入門7-CallableStatement

JDBCTM 指南:入門7-CallableStatement

熱門標簽:長春回撥外呼系統廠家 地圖標注創業項目入駐 外呼系統啥意思 山東智能云外呼管理系統 地圖標注制作道路 四川電信外呼系統靠譜嗎 電銷外呼系統 排行榜 珠海銷售外呼系統運營商 廣州三五防封電銷卡
7 - 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 值,然后將它送到數據庫中。

這種 IN 值的 JDBC 類型和提供給 registerOutParameter 方法的 JDBC 類型應該相同。然后,要檢索輸出值,就要用對應的 getXXX 方法。例如,Java 類型為 byte 的參數應該使用方法 setByte 來賦輸入值。應該給 registerOutParameter 提供類型為 TINYINT 的 JDBC 類型,同時應使用 getByte 來檢索輸出值 (第 8 節“JDBC 和 Java 類型之間的映射”將給出詳細信息和類型映射表)。

下例假設有一個已儲存過程 reviseTotal,其唯一參數是 INOUT 參數。方法 setByte 把此參數設為 25,驅動程序將把它作為 JDBC TINYINT 類型送到數據庫中。接著,registerOutParameter 將該參數注冊為 JDBC TINYINT。執行完該已儲存過程后,將返回一個新的 JDBC TINYINT 值。方法 getByte 將把這個新值作為 Java byte 類型檢索。

CallableStatement cstmt = con.prepareCall(
"{call reviseTotal(?)}");
cstmt.setByte(1, 25);
cstmt.registerOutParameter(1, java.sql.Types.TINYINT);
cstmt.executeUpdate();
byte x = cstmt.getByte(1);

7.1.4 先檢索結果,再檢索 OUT 參數
由于某些 DBMS 的限制,為了實現最大的可移植性,建議先檢索由執行 CallableStatement 對象所產生的結果,然后再用 CallableStatement.getXXX 方法來檢索 OUT 參數。

如果 CallableStatement 對象返回多個 ResultSet 對象(通過調用 execute 方法),在檢索 OUT 參數前應先檢索所有的結果。這種情況下,為確保對所有的結果都進行了訪問,必須對 Statement 方法 getResultSet、getUpdateCount 和 getMoreResults 進行調用,直到不再有結果為止。

檢索完所有的結果后,就可用 CallableStatement.getXXX 方法來檢索 OUT 參數中的值。


7.1.5 檢索作為 OUT 參數的 NULL 值
返回到 OUT 參數中的值可能會是 JDBC NULL。當出現這種情形時,將對 JDBC NULL 值進行轉換以使 getXXX 方法所返回的值為 null、0 或 false,這取決于 getXXX 方法類型。對于 ResultSet 對象,要知道 0 或 false 是否源于 JDBC NULL 的唯一方法,是用方法 wasNull 進行檢測。如果 getXXX 方法讀取的最后一個值是 JDBC NULL,則該方法返回 true,否則返回 flase。第 5 節“ResultSet”將給出詳細信息。


標簽:玉樹 保定 紹興 北海 潮州 肇慶 吳忠 廣元

巨人網絡通訊聲明:本文標題《JDBCTM 指南:入門7-CallableStatement》,本文關鍵詞  JDBCTM,指南,入門,7-CallableStatement,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《JDBCTM 指南:入門7-CallableStatement》相關的同類信息!
  • 本頁收集關于JDBCTM 指南:入門7-CallableStatement的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩欧美色综合| 91成人免费在线| 免费视频最近日韩| 视频一区二区欧美| 午夜影院久久久| 亚洲成av人片在线观看无码| 亚洲成人精品影院| 天涯成人国产亚洲精品一区av| 日韩影院免费视频| 琪琪久久久久日韩精品| 国产一区二区三区四| 裸体一区二区三区| 国产成人亚洲综合色影视| 国产91精品露脸国语对白| 成人激情午夜影院| 在线观看免费亚洲| 欧美一区二区视频免费观看| 久久久亚洲精品石原莉奈| 亚洲国产成人自拍| 亚洲一区二区成人在线观看| 午夜国产精品影院在线观看| 精品一区二区三区视频| 9久草视频在线视频精品| 欧美精品自拍偷拍| 中文字幕不卡在线播放| 午夜精品久久一牛影视| 国产麻豆成人传媒免费观看| 91亚洲男人天堂| 91精品蜜臀在线一区尤物| 欧美国产日韩精品免费观看| 午夜精品一区在线观看| 国产毛片精品一区| 欧美精品在线一区二区三区| 久久精品在线观看| 日韩精品国产精品| 97久久精品人人做人人爽| 日韩欧美中文字幕制服| 国产精品久久久久久久久快鸭 | 欧美一二三区在线观看| 久久精品亚洲麻豆av一区二区 | 欧美最新大片在线看| 日韩精品专区在线| 亚洲国产精品久久一线不卡| 国产a视频精品免费观看| 制服丝袜日韩国产| 亚洲午夜国产一区99re久久| 成人精品电影在线观看| 日韩欧美综合在线| 丝袜美腿亚洲综合| 欧美系列亚洲系列| 中文字幕在线不卡视频| 国产成人欧美日韩在线电影| 欧美一级理论片| 亚洲一区二区三区小说| 99国产精品一区| 国产女人18毛片水真多成人如厕| 免费在线视频一区| 欧美人动与zoxxxx乱| 亚洲激情综合网| 色播五月激情综合网| 国产精品黄色在线观看| 高清成人在线观看| 欧美国产综合色视频| 国产寡妇亲子伦一区二区| 久久影院午夜论| 国产精品18久久久| 中文字幕巨乱亚洲| 成人av电影在线| 国产精品久久久久久久久搜平片 | 成人黄色小视频| 国产日韩欧美制服另类| 国产高清无密码一区二区三区| 精品国产乱码久久久久久浪潮| 久久精品久久精品| 久久久五月婷婷| 国产成人午夜精品影院观看视频| 国产日产欧产精品推荐色 | 精品国产凹凸成av人网站| 久色婷婷小香蕉久久| 精品久久国产字幕高潮| 国产精品 欧美精品| 欧美国产视频在线| 欧洲精品中文字幕| 日韩精品免费专区| 久久久精品免费网站| 成人国产精品免费观看| 亚洲一区二区三区四区在线| 正在播放一区二区| 国产精品综合二区| 亚洲精品成人在线| 日韩一区二区三区视频| 国产成人在线网站| 亚洲精品免费电影| 5月丁香婷婷综合| 国产精品888| 亚洲精品大片www| 日韩欧美在线一区二区三区| 成人免费视频视频| 午夜精品一区二区三区三上悠亚| 欧美不卡一二三| 99热这里都是精品| 免费观看日韩av| 亚洲色图欧洲色图| 日韩欧美卡一卡二| 色视频一区二区| 国产一区二区免费在线| 一级中文字幕一区二区| 久久这里只有精品视频网| 在线观看中文字幕不卡| 国产在线精品免费av| 亚洲二区在线观看| 中文字幕av一区 二区| 欧美精品少妇一区二区三区| 成人小视频免费在线观看| 免费久久99精品国产| 亚洲与欧洲av电影| 久久精品视频免费| 欧美美女激情18p| 97se亚洲国产综合自在线| 激情图区综合网| 肉丝袜脚交视频一区二区| 亚洲人成影院在线观看| 国产欧美日韩三级| 日韩免费视频一区| 欧美精品免费视频| 日本福利一区二区| 91小视频在线观看| 国产宾馆实践打屁股91| 精品一区二区三区影院在线午夜| 亚洲成av人片在线观看无码| 亚洲精品美腿丝袜| 亚洲人成网站色在线观看| 中文字幕精品综合| 国产欧美日韩麻豆91| 国产视频一区不卡| 久久这里只有精品首页| 2023国产一二三区日本精品2022| 日韩欧美一区二区视频| 欧美高清视频不卡网| 欧美日韩卡一卡二| 欧美精品在欧美一区二区少妇| 在线一区二区三区| 色综合色综合色综合色综合色综合| 国产精品一区一区三区| 国产精品一线二线三线精华| 国产一区二区电影| 国产伦精一区二区三区| 国产成人精品三级| 成人免费视频一区| 精品国产三级电影在线观看| 91精品国产综合久久精品app| 欧美三级蜜桃2在线观看| 欧美美女喷水视频| 日韩一卡二卡三卡国产欧美| 欧美电视剧免费观看| 欧美精品一区二区三区在线播放| 久久久91精品国产一区二区三区| 国产色爱av资源综合区| 久久久久久久久久久99999| 国产清纯白嫩初高生在线观看91 | 韩国一区二区三区| 国产精品一区二区视频| 99久久免费精品| 欧美日韩国产欧美日美国产精品| 6080日韩午夜伦伦午夜伦| 精品裸体舞一区二区三区| 国产亚洲一本大道中文在线| 1000部国产精品成人观看| 亚洲国产毛片aaaaa无费看| 日本系列欧美系列| 国产成人av影院| 欧美日韩一区在线| 欧美成人一区二区三区| 一区二区中文字幕在线| 日日夜夜免费精品视频| 成人激情视频网站| 678五月天丁香亚洲综合网| 久久美女高清视频| 亚洲一二三四区| 国产精品一区二区久激情瑜伽| 91蜜桃视频在线| 久久亚洲综合av| 亚洲自拍欧美精品| 国产乱码一区二区三区| 在线看国产一区二区| 久久久久久99精品| 婷婷久久综合九色综合绿巨人 | 欧美一区二区视频在线观看2020| 国产色爱av资源综合区| 日日夜夜精品免费视频| 91亚洲国产成人精品一区二区三| 7777精品伊人久久久大香线蕉经典版下载| 国产区在线观看成人精品| 日韩在线一二三区| 91电影在线观看| 国产精品的网站| 国产很黄免费观看久久| 日韩久久精品一区| 丝袜美腿亚洲一区二区图片| 色吧成人激情小说|