乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

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

      今天要介紹的是在C#里如何調(diào)用帶輸入輸出參數(shù)的存儲(chǔ)過(guò)程。譬如實(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ǔ)過(guò)程構(gòu)建代碼:

      Code

      1use Hotel --數(shù)據(jù)庫(kù)名
      2if exists(select * from sysobjects where name='proc_userinfo')--判斷是否存在存儲(chǔ)過(guò)程
      3drop proc proc_userinfo --若存在刪除此存儲(chǔ)過(guò)程
      4go
      5--創(chuàng)建存儲(chǔ)過(guò)程
      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ǔ)過(guò)程
      18declare @n int
      19exec proc_userinfo admin,123,管理員,@n output
      20--output不能少
      21print @n
      22go

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

      Code

      1//調(diào)用存儲(chǔ)過(guò)程執(zhí)行類(lèi)似于
      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ǔ)過(guò)程中的輸出參數(shù)
      9      //創(chuàng)建連接對(duì)象 using代碼片段好處在于離開(kāi)作用域后立刻從內(nèi)存中釋放對(duì)象
      10      using (SqlConnection con=new SqlConnection(connstring))
      11      {
      12        con.Open();//打開(kāi)數(shù)據(jù)庫(kù)連接
      13        using (SqlCommand cmd=new SqlCommand("proc_userinfo",con))
      14        {
      15          //什么作用不記得了只記得調(diào)用存儲(chǔ)過(guò)程該語(yǔ)句不能少
      16          cmd.CommandType = CommandType.StoredProcedure;
      17          //添加存儲(chǔ)過(guò)程輸入輸出參數(shù)類(lèi)型及輸入?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ù)類(lèi)型是輸入?yún)?shù)還是輸出參數(shù)
      24          cmd.Parameters["@username"].Direction = ParameterDirection.Input;
      25          cmd.Parameters["@pwd"].DbType = DbType.String;
      26          //指定參數(shù)類(lèi)型是輸入?yún)?shù)還是輸出參數(shù)
      27          cmd.Parameters["@pwd"].Direction = ParameterDirection.Input;
      28          cmd.Parameters["@grade"].DbType = DbType.String;
      29          //指定參數(shù)類(lèi)型是輸入?yún)?shù)還是輸出參數(shù)
      30          cmd.Parameters["@grade"].Direction = ParameterDirection.Input;
      31          cmd.Parameters["@count"].DbType = DbType.Int32;
      32          //指定參數(shù)類(lèi)型是輸入?yún)?shù)還是輸出參數(shù)
      33          cmd.Parameters["@count"].Direction = ParameterDirection.Output;
      34          //執(zhí)行存儲(chǔ)過(guò)程 此處類(lèi)似于查詢語(yǔ)句
      35          cmd.ExecuteScalar();
      36          //接受執(zhí)行存儲(chǔ)過(guò)程后的返回值
      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ù)邏輯層及表示層這里就不做介紹了,想必大家都知道該怎么寫(xiě)了。

      注:這里補(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)買(mǎi)等信息,謹(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)論公約

        類(lèi)似文章 更多