C# 調用sql 2000預存程序

來源:互聯網
上載者:User

      今天又有朋友問起關於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 and PassWord = @pwd
go 

     接下來我們就來看下如何在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())
{
    Response.Write(sdr["UserName"].ToString());//輸出查詢到的值
}
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[]{
   new SqlParameter("uid", SqlDbType.Int, 4),
   new SqlParameter("pwd", SqlDbType.VarChar,255), 
};//定義參數,這些是預存程序中要調用的參數,也可以通過直接使用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
as
select @UserName=UserName from users where uid = @uid and PassWord = @pwd
go

--以下是在查詢分析器中調用的方法
declare @n varchar(255) --聲明一個變數用來傳遞參數
exec proc_1 1,admin,@n output --注,要標記為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();

 

     這樣,便很簡單的實現了調用預存程序的方法。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.