JDBC學習筆記(10)——調用函數&存儲過程


如何使用JDBC調用存儲在數據庫中的函數或存儲過程:

* 1.通過COnnection對象的prepareCall()方法創建一個CallableStatement
*    對象的實例,在使用Connection對象的prepareCall() 方法時,需要傳入一個String類型的字符串,
*    該字符串用於指明如何調用存儲過程

* 2.通過CallableStatement對象的registerOutParameter() 方法注冊Out參數

* 3.通過CallableStatement對象的setXxx()方法設定IN或In out
*    參數,若想將參數設為null,可以使用setNUll()

* 4.通過CallableStatement對象的execute()方法執行存儲過程

* 5.如果所調用的是帶返回參數的存儲過程沒還需要通過CallableStatement對象的getXxx()函數進行獲取

具體的代碼實現:

 1     @Test
 2     public void testCallableStatement() {
 3         Connection connection = null;
 4         /**
 5          * 調用存儲函數 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 
 6          * 調用存儲過程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}
 7          */
 8         // 調用存儲函數和調用存儲過程,一個sql語句的區別
 9         String sql = "{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}";
10         CallableStatement callableStatement = null;
11         try {
12 
13             connection = JDBCTools.getConnection();
14             /*
15              * 1.通過COnnection對象的prepareCall()方法創建一個CallableStatement
16              * 對象的實例,在使用Connection對象的prepareCall() 方法時,需要傳入一個String類型的字符串,
17              * 該字符串用於指明如何調用存儲過程
18              */
19             callableStatement = connection.prepareCall(sql);
20 
21             /*
22              * 2.通過CallableStatement對象的registerOutParameter() 方法注冊Out參數
23              */
24             callableStatement.registerOutParameter(1, Types.NUMERIC);
25             callableStatement.registerOutParameter(3, Types.NUMERIC);
26 
27             /*
28              * 3.通過CallableStatement對象的setXxx()方法設定IN或In out
29              * 參數,若想將參數設為null,可以使用setNUll()
30              */
31             callableStatement.setInt(2, 80);
32 
33             /* 4.通過CallableStatement對象的execute()方法執行存儲過程 */
34             callableStatement.execute();
35 
36             /*
37              * 5.如果所調用的是帶返回參數的存儲過程沒還需要通過CallableStatement對象的getXxx()
38              */
39             double sumSalary = callableStatement.getDouble(1);
40             long empCount = callableStatement.getLong(3);
41         } catch (Exception e) {
42             e.printStackTrace();
43         } finally {
44             JDBCTools.release(null, callableStatement, connection);
45         }
46     }

調用函數和存儲過程的sql語句的區別:

* 調用存儲函數 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
* 調用存儲過程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}

這個知識點暫時沒用到,先做下筆記,待以后用到以后再深入研究,JDBC的學習暫時告一段落,開啟新的學習征程!

 


個人感悟:把簡單的事情做到極致,打扎實的基礎,寫優秀的代碼

本文為博主原創文章,轉載請注明出處:http://www.cnblogs.com/ysw-go/
1、本博客的原創原創文章,都是本人平時學習所做的筆記,如有錯誤,歡迎指正。
2、如有侵犯您的知識產權和版權問題,請通知本人,本人會即時做出處理文章。
3、本博客的目的是知識交流所用,轉載自其它博客或網站,作為自己的參考資料的,感謝這些文章的原創人員


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM