C#調用sql2000存儲過程方法小結
本文實例總結了C#調用sql2000存儲過程方法,分享給大家供大家參考。具體實現(xiàn)方法如下:
調試環(huán)境:VS.NET 2005,SQL 2000,WINDOWS XP sp2。
語言:C#
一、調用帶輸入參數(shù)的存儲過程
首先自然是在查詢分析器里創(chuàng)建一個存儲過程嘍~~ 如下所示:
@uid int,
@pwd varchar(255)
as
select UserName from users where uid = @uid and PassWord = @pwd
go
接下來我們就來看下如何在VS 2005中使用C#調用這個存儲過程。
方法一:
conn.Open();//打開數(shù)據(jù)庫連接
SqlCommand cmd = new SqlCommand("exec proc_1 @uid=1,@pwd=admin", conn);//Command中寫調用存儲過程的語句
//大家應該看出來了和直接在查詢分析器中執(zhí)行很類似,“exec 存儲過程名 @參數(shù)1=參數(shù)值,@參數(shù)2=參數(shù)值”
SqlDataReader sdr = cmd.ExecuteReader();//執(zhí)行存儲過程
while (sdr.Read())
{
Response.Write(sdr["UserName"].ToString());//輸出查詢到的值
}
sdr.Close();
conn.Close();
方法二:
conn.Open();//打開數(shù)據(jù)庫連接
SqlCommand cmd = new SqlCommand("proc_1", conn);//存儲過程名
cmd.CommandType = CommandType.StoredProcedure;//設置命令類型為存儲過程
SqlParameter[] param = new SqlParameter[]{
new SqlParameter("uid", SqlDbType.Int, 4),
new SqlParameter("pwd", SqlDbType.VarChar,255),
};//定義參數(shù),這些是存儲過程中要調用的參數(shù),也可以通過直接使用cmd.AddWithValue方法添加參數(shù)
param[0].Value = 1;//給參數(shù)賦值
param[1].Value = "admin";
cmd.Parameters.AddRange(param);//一定要記得將剛定義的參數(shù)添加到cmd的參數(shù)中,不然前面的參數(shù)就白弄了。
string sname =(string)cmd.ExecuteScalar();//如果存儲過程返回的是單個值,我們可以直接這樣取出所要的值
Response.Write(sname);
sdr.Close();
conn.Close();
二、調用帶輸出參數(shù)的存儲過程
上面所講的只是調用輸入參數(shù)的存儲過程,下面大概講一下如何調用有輸出參數(shù)的存儲過程。
首先,我們先對之前的存儲過程修改一下,如下所示:
@uid int,
@pwd varchar(255),
@UserName varchar(255) output --這里我們增加一個輸出變量,記得加上output
as
select @UserName=UserName from users where uid = @uid and PassWord = @pwd
go
--以下是在查詢分析器中調用的方法
declare @n varchar(255) --聲明一個變量用來傳遞參數(shù)
exec proc_1 1,admin,@n output --注,要標記為output變量
print @n
下面我們看看在VS.NET 中的調用方式:
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;//設置參數(shù)為輸出參數(shù)
cmd.ExecuteNonQuery();
string sname = (string)cmd.Parameters["username"].Value;//獲取輸出參數(shù)的值
Response.Write(sname);
conn.Close();
這樣,便很簡單的實現(xiàn)了調用存儲過程的方法。
希望本文所述對大家的C#程序設計有所幫助。
相關文章
C#使用自定義的泛型節(jié)點類實現(xiàn)二叉樹類
這篇文章主要為大家詳細介紹了C#如何使用自定義的泛型節(jié)點類 Node<T>實現(xiàn)二叉樹類BinaryTree<T>及其方法,感興趣的小伙伴可以跟隨小編一起學習一下2024-03-03C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移
EF 中 Code First 的數(shù)據(jù)遷移網上有很多資料,我這份并沒什么特別。Code First 創(chuàng)建視圖網上也有很多資料,但好像很麻煩,而且親測好像是無效的方法(可能是我太笨,沒搞成功),我摸索出了一種簡單有效的方法,這里分享給大家2021-09-09unity3d?對接?workerman?實現(xiàn)聯(lián)機游戲功能
workerman?是一款開源高性能?PHP?應用容器,他除了用于互聯(lián)網、即時通訊、APP?開發(fā)、硬件通訊、智能家居、物聯(lián)網等領域的開發(fā)外,這篇文章主要介紹了unity3d?對接?workerman?實現(xiàn)聯(lián)機游戲,需要的朋友可以參考下2022-10-10