詳細(xì)參數(shù)ADO.NET建立連接問題
開發(fā)環(huán)境是ADO.NET建立連接,數(shù)據(jù)庫(kù)是SQL Sever 2000 在進(jìn)入正題之前,先講點(diǎn)別的,如何在VC中連接Sybase數(shù)據(jù)庫(kù),
連接字符竄為,_bstr_t strCnn(\"Driver={Sybase System 11};Srvr=RRRRR;Uid=RRR_Mao_bb1;Pwd=user2\");這里,RRRRR是數(shù)據(jù)庫(kù)的名稱,已經(jīng)在Sybase->sdedit中設(shè)定好了RRR_Mao_bb1 和 user2分別是用戶名和密碼。#t#
不過使用這種基于ODBC的連接使用一段時(shí)間以后,就出現(xiàn)問題了,ADO.NET建立連接出現(xiàn)了“Catastrophic failure”的錯(cuò)誤,微軟的解釋是為了使我們的調(diào)用存儲(chǔ)過程的例子有更多的通用性,我建了有輸入?yún)?shù),有輸出參數(shù),有一個(gè)返回記錄集,有一個(gè)返回值的存儲(chǔ)過程,如下:
- CREATE PROCEDURE sp_1 (
- @pin1 int ,
- @pin2 CHAR(10),
- @pout1 int OUTPUT,
- )
- AS
- BEGIN
- declare @retval int
- select @pout1 = @pin1 + 100
- select @pout2 = left( ltrim(rtrim(@pin2)) + \'123\' , 10)
- select Num,Name,Date
- from TABLE1
- select @retval = 1236
- return @retval
- END
對(duì)于這個(gè)SP來說,ADO.NET建立連接這些個(gè)參數(shù)是@RETURN_VALUE(int ,返回值)@pin1 ( int ,輸入 ) @pin2 ( char(10) ,輸入 )@pout1 (int ,輸入/輸出)@pout1 ( char(10) , 輸入/輸出) @RETURN_VALUE是第0個(gè)參數(shù),@pin1是第1個(gè),依此類推以上信息可以在SQL 的查詢分析器中看到,注意,這些參數(shù)的順序很重要調(diào)用的前期準(zhǔn)備這就不多說了,什么import 庫(kù)阿,ADO.NET建立連接阿,什么的,不多說了。
假定連接是pConn注意,ADO.NET建立連接這里要把pConn設(shè)定成adUseClient型pConn->CursorLocation =adUseClient;下面我要貼具體的代碼了,為了精簡(jiǎn)所貼的代碼,我把所有的捕獲異常都沒貼出來(try catch)使用Refresh的方法來調(diào)用。