編輯
收藏 所屬分類: sql資料庫
資料訪問層現在都興用儲存過程了
本篇記錄了乙個功能比較齊全的儲存過程的寫法,和乙個c#實現的比較通用的呼叫帶返回值儲存過程的方法。
1、儲存過程:
例子中操作的表為 power(p_id,p_name,p_des)
本儲存過程中進行了一般的空值,主鍵重複檢測,對多條操作語句使用了事務
create procedure myp2
@pid int ,@pname nvarchar(15),@pdes nvarchar(50)
asdeclare @return int,@count int
--檢測引數是否有空值
if(ltrim(rtrim(@pname))='' or ltrim(rtrim(@pid))='')
begin
select 1--輸入的引數有空值
return
end--檢測是否有主鍵重複
select @count=count(1) from power where p_id=@pid
if(@count>0)
begin
select 2--有重複
return
end--執行事務
begin tran
insert into power(p_id,p_name,p_des)values(@pid,@pname,@pdes)
if(@@error<>0) goto l_rollback
insert into powerlog(p_id,p_des)values(@pid,@pdes)
if(@@error<>0) goto l_rollback
commit tran
select @return=4 --成功
goto l_ok
l_rollback:
rollback tran
select @return=3 --失敗
l_ok:
select @return
go2、c#中呼叫帶返回值的儲存過程
這是乙個比較通用的方法,儲存過程的引數可以放在陣列裡面
/*執行儲存過程
* 引數說明:
* storeproname:儲存過程名稱
* parameters:儲存過程的引數,用oledbparameter型別的陣列表示
* result
:執行該儲存過程的返回值,返回「成功」則執行成功,返回其他則失敗
*/public void excutestore(string storeproname,oledbparameter parameters,out string result)
string temp = "";
trycatch (exception ee)
finally
result = "成功"; //預設成功
//返回0表示資料操作成功
//返回1表示提交的資料有空值
//返回2表示編號有重複
//返回3表示資料操作錯誤
switch (temp)
}上面方法的使用範例:
oledbparameter param=new oledbparameter[2];
param[0] = new oledbparameter("@name", oledbtype.varchar, 6);
param[1] = new oledbparameter("@pwd", oledbtype.varchar, 40);
param[0].value = textbox1.text;
param[1].value = textbox2.text;
string outstring;
excutestore("myprocedure", param, out outstring);
if (outstring == "成功")
binding();
else
label1.text = outstring;
我用的是oledb驅動,連的一種古老的資料庫sybase,可能大家對sqlparameter更熟悉一點,方法一樣。
C 中呼叫儲存過程筆記(原)
資料訪問層現在都興用儲存過程了 本篇記錄了乙個功能比較齊全的儲存過程的寫法,和乙個c 實現的比較通用的呼叫帶返回值儲存過程的方法。1 儲存過程 例子中操作的表為 power p id,p name,p des 本儲存過程中進行了一般的空值,主鍵重複檢測,對多條操作語句使用了事務 create pro...
C 中SQL呼叫儲存過程
兩種不同的儲存過程呼叫方法 為了突出新方法的優點,首先介紹一下在.net中呼叫儲存過程的 官方 方法。另外,本文的所有示例程式均工作於sqlserver資料庫上,其它情況類似,以後不再一一說明。本文所有例子均採用c 語言。要在應用程式中訪問資料庫,一般性的步驟是 首先宣告乙個資料庫連線sqlconn...
C 呼叫儲存過程
string sconnectionstring server local sqlexpress database forum trusted connection true 04 using sqlconnection conn new sqlconnection sconnectionstrin...