如何使用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、本博客的目的是知識交流所用,轉載自其它博客或網站,作為自己的參考資料的,感謝這些文章的原創人員
