自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

J2ee Jdbc存儲過程調用

開發(fā) 后端
本文總結了J2ee的Jdbc存儲過程調用。Jdbc存儲過程是保存起來的可以接受和返回用戶提供的參數(shù)的 Transact-SQL 語句的集合。

首先給大家出個題目,看看有想法沒有,
求二者的關系
男A與女B結婚生了男C
男X與女Y結婚生了女Z
男C與女Z結婚...
這就是人間的結婚生子一代傳一代的關系
(要考慮一人多次結婚的情況)

目的:
設置Table,欄位自定,
寫一SQL函數(shù)求出若干年前后的任意兩人之間的關系,假定身份證號碼不重復,當輸入兩身份證后就能得出他們的關系

下面是正文

Jdbc存儲過程是保存起來的可以接受和返回用戶提供的參數(shù)的 Transact-SQL 語句的集合。 可以創(chuàng)建一個過程供永久使用,或在一個會話中臨時使用(局部臨時過程),或在所有會話中臨時使用(全局臨時過程)。 也可以創(chuàng)建在 Microsoft® SQL Server™ 啟動時自動運行的存儲過程。 用戶定義函數(shù),它是返回值的已保存的 Transact-SQL 例程。用戶定義函數(shù)不能用于執(zhí)行一組修改全局數(shù)據(jù)庫狀態(tài)的操作。 與系統(tǒng)函數(shù)一樣,用戶定義函數(shù)可以從查詢中喚醒調用。也可以像存儲過程一樣,通過 EXECUTE 語句執(zhí)行。 總之: 自定義函數(shù):有且只有一個返回值,就像普通的函數(shù)一樣,可以直接在表達式中嵌入調用并可以隨處調用。 存儲過程:可以沒有返回值,也可以有任意個輸出參數(shù),必須單獨調用

存儲過程很好吧,尤其是涉及到多表聯(lián)合更新的問題,就效率易用兩個方面來說就都NB的了。既然這么好的東西,你說說在實際的WEB application里面不用豈不是可惜了,話說到咱們的WEB APP中,要是NB的企業(yè)一般是不會用什么 structs hibernate spring jsf等等框架,但是不能說這些東西不優(yōu)秀不好用,相反一些公司的一般項目用這些東西的優(yōu)點自不必多說。但是現(xiàn)在流行的ssh也不是很好的支持存儲過程,見網(wǎng)上也說hibernate 3.X支持存儲過程,笨人沒有用過,不敢妄加評論,方正2.X不行,有高人說spring支持,查了查看看,里面說到底也是用jdbc,而且還是先要從文件系統(tǒng)里面讀取配置數(shù)據(jù)源的XML文件,解析出來相應的數(shù)據(jù)連接,我測試了一下,單次訪問,速度都明顯的需要等待,試想如果訪問量大的話,速度效率自然不敢恭維。既然本身就是用jdbc,為何不直接生成一個專門處理存儲過程的類,里面用jdbc去處理呢。而且就這個方法也有人用,感覺不是很多,笨人測試了一下,速度明顯比那個提取XML文件的方法高,于是在沒有找到更好辦法時間,我決定暫時用這個笨方法:

下面我給出幾個例子,以后好復習學習:

  1. create table bankMoney(  
  2. Id varchar(5) primary key not null,  
  3. userID varchar(20),  
  4. sex varchar(2),  
  5. userMoney int 
  6. )  

這個table 是隨便搞的,意義混亂,不要當真,說明問題就行

第一種情況:沒有輸入返回記錄集

  1. create proc selectNoParam  
  2. as  
  3. select * from bankMoney  
  4. java code:  
  5. Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
  6.       Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bbs""sa""sa");  
  7.  
  8. CallableStatement cs = con.prepareCall("{call selectNoParam()}");  
  9.       ResultSet rs = cs.executeQuery();  
  10.       while(rs.next()){  
  11.         System.out.println(rs.getString("Id")+" " + rs.getString("userid")+" " + rs.getString("sex")+" " + rs.getString("userMoney"));  
  12. }  

第二種情況:

有輸入?yún)?shù),沒有輸出參數(shù)的例子。這里的delbankMoney(?),一個問號代表一個參數(shù),包括輸入?yún)?shù)和輸出參數(shù),

      //從左到右index從1開始依次增大。一般來說在聲明定義存儲過程時間,后面一般放輸出參數(shù)

--刪除相應員工

  1. create proc delbankMoney(@paramId varchar(5))  
  2. as  
  3. delete from bankMoney where Id = @paramIdjava code:  
  4. CallableStatement cs = con.prepareCall("{call delbankMoney(?)}");  
  5.       cs.setString(1"001");  
  6.       cs.execute(); 

第三中情況:一個輸入,一個輸出,后面的問號代表輸出,可以有多個輸出,具體怎么設置要根據(jù)你在數(shù)據(jù)庫中的聲明順序

  1. Proc code:  
  2. create proc testOutPut(@paramId int,@paramSalary int output)  
  3. as  
  4. select @paramSalary = userMoney from bankMoney where Id = @paramId 
  5. java code:  
  6. CallableStatement cs = con.prepareCall("{call testOutPut(?,?)}");  
  7.       cs.setString(1"001");  
  8.       cs.registerOutParameter(2, java.sql.Types.TINYINT);  
  9.       cs.executeUpdate();  
  10.       System.out.println("001號員工工資為:"+cs.getObject(2));  
  11.       cs.close();  
  12.       con.close();  

Jdbc存儲過程調用基本上就是這樣了。

【編輯推薦】

  1. j2ee web service開發(fā)(三)SAAJ帶附件的soap消息
  2. j2ee web service開發(fā)(二)動態(tài)代理與動態(tài)調用
  3. J2ee Jdbc 存儲過程調用
  4. j2ee web service開發(fā)(五)把ejb發(fā)布為web服務
  5. j2ee web service開發(fā)(四)soap報頭與處理
責任編輯:book05 來源: csdn
相關推薦

2009-06-23 08:12:48

J2EE調用存儲過程

2009-06-22 17:34:40

J2EE架構

2009-06-23 08:06:46

J2EE體系架構J2EE模型J2EE設計模式

2009-06-10 16:25:43

J2EE架構架構

2009-06-10 14:10:23

J2EE學習J2EE是什么

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2009-06-19 16:38:45

JDBC簡介J2EE

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-22 17:05:41

Java EEJava企業(yè)應用

2009-06-22 16:21:02

J2EE線程

2009-06-18 16:13:14

J2EE開發(fā)

2009-06-22 11:15:00

J2EE應用測試

2009-06-11 17:19:47

J2EE設計模式Template

2009-02-23 11:18:06

J2EE架構師Java

2009-06-11 17:11:07

J2EE設計模式工廠模式

2009-06-19 17:03:44

J2EE學習

2011-05-16 14:07:58

J2EE

2019-01-08 16:26:43

Java EEJ2EEJakarta EE
點贊
收藏

51CTO技術棧公眾號