C 呼叫sql 2000儲存過程

2021-09-22 09:03:55 字數 3456 閱讀 3011

今天又有朋友問起關於c#呼叫儲存過程的問題,發現自己好久沒用,竟然也忘得差不多了

本來想直接把以前那片拿過來的,但是感覺還是重新寫一下讓自己印象深刻點。

除錯環境:vs.net 2005,sql 2000,windows xp sp2。

語言:c#

呼叫帶輸入引數的儲存過程

首先自然是在查詢分析器裡建立乙個儲存過程嘍~~   如下所示:

create

proc

proc_1

@uid

int,

@pwd

varchar

(255)as

select

username 

from

users 

where

uid 

=@uid

andpassword 

=@pwdgo

接下來我們就來看下如何在vs 2005中使用c#呼叫這個儲存過程。

方法一:

sqlconnection conn 

=new

sqlconnection(

"server=(local);database=sql1;uid=sa;pwd=");

conn.open();

//開啟資料庫連線

sqlcommand cmd 

=new

sqlcommand(

"exec proc_1 @uid=1,@pwd=admin

", conn);

//command中寫呼叫儲存過程的語句

//大家應該看出來了和直接在查詢分析器中執行很類似,「exec 儲存過程名 @引數1=引數值,@引數2=引數值」

sqldatareader sdr 

=cmd.executereader();

//執行儲存過程

while

(sdr.read())

sdr.close();

conn.close();

方法二:

sqlconnection conn 

=new

sqlconnection(

"server=(local);database=sql1;uid=sa;pwd=");

conn.open();

//開啟資料庫連線

sqlcommand cmd 

=new

sqlcommand(

"proc_1

", conn);

//儲存過程名

cmd.commandtype 

=commandtype.storedprocedure;

//設定命令型別為儲存過程

sqlparameter param 

=new

sqlparameter;

//定義引數,這些是儲存過程中要呼叫的引數,也可以通過直接使用cmd.addwithvalue方法新增引數

param[

0].value =1

;//給引數賦值

param[

1].value ="

admin";

cmd.parameters.addrange(param);

//一定要記得將剛定義的引數新增到cmd的引數中,不然前面的引數就白弄了。

string

sname =(

string

)cmd.executescalar();

//如果儲存過程返回的是單個值,我們可以直接這樣取出所要的值

response.write(sname);

sdr.close();

conn.close();

呼叫帶輸出引數的儲存過程

上面所講的只是呼叫輸入引數的儲存過程,下面大概講一下如何呼叫有輸出引數的儲存過程。

首先,我們先對之前的儲存過程修改一下,如下所示:

create

proc

proc_1

@uid

int,

@pwd

varchar

(255

),@username

varchar

(255

) output 

--這裡我們增加乙個輸出變數,記得加上output

asselect

@username

=username 

from

users 

where

uid 

=@uid

andpassword 

=@pwd

go--

以下是在查詢分析器中呼叫的方法

declare

@nvarchar

(255

) --

宣告乙個變數用來傳遞引數

exec

proc_1 

1,admin,

@noutput 

--注,要標記為output變數

print

@n

下面我們看看在vs.net 中的呼叫方式:

sqlconnection conn 

=new

sqlconnection(

"server=(local);database=sql1;uid=sa;pwd=");

conn.open();

sqlcommand cmd 

=new

sqlcommand(

"proc_1

", conn);

cmd.commandtype 

=commandtype.storedprocedure;

cmd.parameters.addwithvalue(

"uid", 

1);cmd.parameters.addwithvalue(

"pwd", 

"admin");

cmd.parameters.add(

"username

", sqldbtype.varchar, 

255);

cmd.parameters[

"username

"].direction 

=parameterdirection.output;

//設定引數為輸出引數

cmd.executenonquery();

string

sname =(

string

)cmd.parameters[

"username

"].value;

//獲取輸出引數的值

response.write(sname);

conn.close();

這樣,便很簡單的實現了呼叫儲存過程的方法。

C 呼叫sql2000儲存過程方法小結

除錯環境 vs.net 2005,sql 2000,windows xp sp2。語言 c 一 呼叫帶輸入引數的儲存過程 首先自然是在查詢分析器裡建立乙個儲存過程嘍 如下所示 複製 如下 create proc proc 1 uid int,pwd varchar 255 asselect user...

sql2000儲存過程

自 http www.cnblogs.com a13971240 archive 2008 10 22 1316747.html create proc getdataset tablelist varchar 200 搜尋表的字段,比如 id,datatime,job 用逗號隔開 tablenam...

sql2000儲存過程

create proc getdataset tablelist varchar 200 搜尋表的字段,比如 id,datatime,job 用逗號隔開 tablename varchar 30 搜尋的表名 selectwhere varchar 500 搜尋條件,這裡不用寫where,比如 job...