日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C#中調(diào)用輸入輸出參數(shù)的存儲(chǔ)過程

 無(wú)名小卒917 2014-07-17

C#中調(diào)用輸入輸出參數(shù)的存儲(chǔ)過程

時(shí)間:2010-12-25

關(guān)于存儲(chǔ)過程的介紹大家想必也不陌生了吧。大家可以參考《淺談存儲(chǔ)過程》一文,這里不做介紹。

今天要介紹的是在C#里如何調(diào)用帶輸入輸出參數(shù)的存儲(chǔ)過程。譬如實(shí)現(xiàn)簡(jiǎn)單的登陸功能,根據(jù)用戶輸入的用戶名、用戶密碼及用戶權(quán)限實(shí)現(xiàn)登陸。這里充當(dāng)輸入?yún)?shù)的有:用戶名、用戶密碼、登陸權(quán)限。充當(dāng)輸出參數(shù)的就是在數(shù)據(jù)庫(kù)里面根據(jù)輸入?yún)?shù)的信息查詢數(shù)據(jù)庫(kù)中是否有記錄。具體來(lái)說(shuō)就是記錄的行數(shù)。

數(shù)據(jù)庫(kù)中的存儲(chǔ)過程構(gòu)建代碼:

Code

1use Hotel --數(shù)據(jù)庫(kù)名
2if exists(select * from sysobjects where name='proc_userinfo')--判斷是否存在存儲(chǔ)過程
3drop proc proc_userinfo --若存在刪除此存儲(chǔ)過程
4go
5--創(chuàng)建存儲(chǔ)過程
6create proc proc_userinfo
7@username varchar(50),--輸入?yún)?shù)
8@pwd varchar(50),--輸入?yún)?shù)
9@grade varchar(20),--輸入?yún)?shù)
10@count int output --輸出參數(shù)output不能少
11--sql語(yǔ)句
12as
13select @count=count(*) from userinfo where username=@username and pwd=@pwd and @grade=grade
14go
15
16
17執(zhí)行存儲(chǔ)過程
18declare @n int
19exec proc_userinfo admin,123,管理員,@n output
20--output不能少
21print @n
22go

數(shù)據(jù)訪問層代碼

Code

1//調(diào)用存儲(chǔ)過程執(zhí)行類似于
2//select count(*) from userinfo where username=username and pwd=pwd and grade=grade
3//接受三個(gè)參數(shù)分別用來(lái)表示用戶名、用戶密碼、用戶權(quán)限
4public bool GetUserinfo(string username,string pwd,string grade)
5    {
6      //獲取連接字符串
7      private string connstring = ConfigurationManager.ConnectionStrings["connstring"].ToString();
8      int n = 0;//查詢后返回的行數(shù)保存存儲(chǔ)過程中的輸出參數(shù)
9      //創(chuàng)建連接對(duì)象 using代碼片段好處在于離開作用域后立刻從內(nèi)存中釋放對(duì)象
10      using (SqlConnection con=new SqlConnection(connstring))
11      {
12        con.Open();//打開數(shù)據(jù)庫(kù)連接
13        using (SqlCommand cmd=new SqlCommand("proc_userinfo",con))
14        {
15          //什么作用不記得了只記得調(diào)用存儲(chǔ)過程該語(yǔ)句不能少
16          cmd.CommandType = CommandType.StoredProcedure;
17          //添加存儲(chǔ)過程輸入輸出參數(shù)類型及輸入?yún)?shù)值
18          cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value=username;
19          cmd.Parameters.Add("@pwd", SqlDbType.VarChar, 50).Value=pwd;
20          cmd.Parameters.Add("@grade", SqlDbType.VarChar, 50).Value=grade;
21          cmd.Parameters.Add("@count", SqlDbType.Int);
22          cmd.Parameters["@username"].DbType = DbType.String;
23          //指定參數(shù)類型是輸入?yún)?shù)還是輸出參數(shù)
24          cmd.Parameters["@username"].Direction = ParameterDirection.Input;
25          cmd.Parameters["@pwd"].DbType = DbType.String;
26          //指定參數(shù)類型是輸入?yún)?shù)還是輸出參數(shù)
27          cmd.Parameters["@pwd"].Direction = ParameterDirection.Input;
28          cmd.Parameters["@grade"].DbType = DbType.String;
29          //指定參數(shù)類型是輸入?yún)?shù)還是輸出參數(shù)
30          cmd.Parameters["@grade"].Direction = ParameterDirection.Input;
31          cmd.Parameters["@count"].DbType = DbType.Int32;
32          //指定參數(shù)類型是輸入?yún)?shù)還是輸出參數(shù)
33          cmd.Parameters["@count"].Direction = ParameterDirection.Output;
34          //執(zhí)行存儲(chǔ)過程 此處類似于查詢語(yǔ)句
35          cmd.ExecuteScalar();
36          //接受執(zhí)行存儲(chǔ)過程后的返回值
37          n = (int)cmd.Parameters["@count"].Value;
38          //根據(jù)返回值判斷數(shù)據(jù)庫(kù)中是否存在對(duì)應(yīng)用戶名密碼及用戶權(quán)限的記錄
39          if (n==1)
40          {
41            return true;
42          }
43          else
44          {
45            return false;
46          }
47        }
48      }
49    }

至于業(yè)務(wù)邏輯層及表示層這里就不做介紹了,想必大家都知道該怎么寫了。

注:這里補(bǔ)充點(diǎn)關(guān)于清空DataGradeView中所有數(shù)據(jù)的方法

Code

1//用dataGradeView.DataSource dataGradeView的數(shù)據(jù)源創(chuàng)建一個(gè)DataTable 對(duì)象 需要強(qiáng)轉(zhuǎn)成DataTable
2
3   DataTable dt=(DataTable )dataGradeView.DataSource; 
4 //dataGradeView為具體的dataGradeView
5
6   dt.Rows.Clean(); //刪除表中的行
7
8   dataGradeView.DataSource=dt; 
9//再把dt綁定到dataGradeView上即可
10

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多