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

專業(yè)領(lǐng)域包括網(wǎng)站制作、成都網(wǎng)站制作、商城網(wǎng)站制作、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。
目的:
設(shè)置Table,欄位自定,
寫一SQL函數(shù)求出若干年前后的任意兩人之間的關(guān)系,假定身份證號碼不重復(fù),當(dāng)輸入兩身份證后就能得出他們的關(guān)系
下面是正文
Jdbc存儲過程是保存起來的可以接受和返回用戶提供的參數(shù)的 Transact-SQL 語句的集合。 可以創(chuàng)建一個過程供永久使用,或在一個會話中臨時使用(局部臨時過程),或在所有會話中臨時使用(全局臨時過程)。 也可以創(chuàng)建在 Microsoft? SQL Server? 啟動時自動運行的存儲過程。 用戶定義函數(shù),它是返回值的已保存的 Transact-SQL 例程。用戶定義函數(shù)不能用于執(zhí)行一組修改全局數(shù)據(jù)庫狀態(tài)的操作。 與系統(tǒng)函數(shù)一樣,用戶定義函數(shù)可以從查詢中喚醒調(diào)用。也可以像存儲過程一樣,通過 EXECUTE 語句執(zhí)行。 總之: 自定義函數(shù):有且只有一個返回值,就像普通的函數(shù)一樣,可以直接在表達式中嵌入調(diào)用并可以隨處調(diào)用。 存儲過程:可以沒有返回值,也可以有任意個輸出參數(shù),必須單獨調(diào)用
存儲過程很好吧,尤其是涉及到多表聯(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文件,解析出來相應(yīng)的數(shù)據(jù)連接,我測試了一下,單次訪問,速度都明顯的需要等待,試想如果訪問量大的話,速度效率自然不敢恭維。既然本身就是用jdbc,為何不直接生成一個專門處理存儲過程的類,里面用jdbc去處理呢。而且就這個方法也有人用,感覺不是很多,笨人測試了一下,速度明顯比那個提取XML文件的方法高,于是在沒有找到更好辦法時間,我決定暫時用這個笨方法:
下面我給出幾個例子,以后好復(fù)習(xí)學(xué)習(xí):
- create table bankMoney(
- Id varchar(5) primary key not null,
- userID varchar(20),
- sex varchar(2),
- userMoney int
- )
這個table 是隨便搞的,意義混亂,不要當(dāng)真,說明問題就行
第一種情況:沒有輸入返回記錄集
- create proc selectNoParam
- as
- select * from bankMoney
- java code:
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
- Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bbs", "sa", "sa");
- CallableStatement cs = con.prepareCall("{call selectNoParam()}");
- ResultSet rs = cs.executeQuery();
- while(rs.next()){
- System.out.println(rs.getString("Id")+" " + rs.getString("userid")+" " + rs.getString("sex")+" " + rs.getString("userMoney"));
- }
第二種情況:
有輸入?yún)?shù),沒有輸出參數(shù)的例子。這里的delbankMoney(?),一個問號代表一個參數(shù),包括輸入?yún)?shù)和輸出參數(shù),
//從左到右index從1開始依次增大。一般來說在聲明定義存儲過程時間,后面一般放輸出參數(shù)
--刪除相應(yīng)員工
- create proc delbankMoney(@paramId varchar(5))
- as
- delete from bankMoney where Id = @paramIdjava code:
- CallableStatement cs = con.prepareCall("{call delbankMoney(?)}");
- cs.setString(1, "001");
- cs.execute();
第三中情況:一個輸入,一個輸出,后面的問號代表輸出,可以有多個輸出,具體怎么設(shè)置要根據(jù)你在數(shù)據(jù)庫中的聲明順序
- Proc code:
- create proc testOutPut(@paramId int,@paramSalary int output)
- as
- select @paramSalary = userMoney from bankMoney where Id = @paramId
- java code:
- CallableStatement cs = con.prepareCall("{call testOutPut(?,?)}");
- cs.setString(1, "001");
- cs.registerOutParameter(2, java.sql.Types.TINYINT);
- cs.executeUpdate();
- System.out.println("001號員工工資為:"+cs.getObject(2));
- cs.close();
- con.close();
Jdbc存儲過程調(diào)用基本上就是這樣了。
【編輯推薦】
- j2ee web service開發(fā)(三)SAAJ帶附件的soap消息
- j2ee web service開發(fā)(二)動態(tài)代理與動態(tài)調(diào)用
- J2ee Jdbc 存儲過程調(diào)用
- j2ee web service開發(fā)(五)把ejb發(fā)布為web服務(wù)
- j2ee web service開發(fā)(四)soap報頭與處理
網(wǎng)頁名稱:J2ee Jdbc存儲過程調(diào)用
本文地址:http://www.5511xx.com/article/djihijp.html


咨詢
建站咨詢
