<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    創建更穩健的數據命令(參數化數據命令)

       在參數化數據命令中,使用參數作為占位符來替代硬編碼的值。這些參數將被分別添加,并自動進行特殊字符的編碼處理。例如下面的SQL語句: select * from customers where customerID='Alfki'  可以轉換為一個參數化的sql語句:select * from customers where customerID=@customerID

            不同的數據提供程序,參數化數據命令的語法是不同的。對于sqlserver數據提供程序,參數化的數據命令是使用唯一的命名占位符作為參數。參數名可以任意選取,但是必須是以@字符開頭。通常情況下我們是以字段名作為相應的參數名(比如上面的語句中使用@customerID作為customerID字段的參數名)。ole DB數據提供程序則采用了不同的語法。它要求每一個參數使用一個問號(?)來表示,在其sql語句中,參數并不是通過參數名來標識的,而是根據參數在sql語句中出現的位置來標識的。如下面:select * from customers where customerID=?

            無論用哪種方式來標識數據命令中的參數,都需要為sql語句中的每一個參數提供相應的Parameter對象,每一個Parameter對象都將被添加到Command.Parameters參數集合中。對于ole  DB數據提供程序,一定要按照參數在sql語句中出現的順序來添加相應的Parameter對象。對于sql server數據提供程序來說,添加參數的順序是無關緊要的,因為參數將根據參數名來匹配相應的占位符。

          protected void cmdInsert_Click(object sender, EventArgs e)

         {

              string insertSQL;

              insertSQL="insert into authors(";

              insertSQL+="au_id,au_fname,au_lname, contract ) ";

              insertSQL+="values(@au_id,@au_fname,@au_lname,@contract)";

              sqlConnection con=new sqlConnection(connectionstring);

              sqlCommand cmd=new sqlCommand(insertSQL,con);

              //添加相應的參數

              cmd.Parameters.AddWithValue("@au_id",txtID.text);

              cmd.Parameters.AddWithValue("@au_fname",txtFirstName.text); 

              cmd.Parameters.AddWithValue("@au_lname",txtLastName.text); 

              cmd.Parameters.AddWithValue("@ contract ",Convert.ToInt16(chkContract.Checked)); 

              int added=0;

              try

              {

                   con.Open();

                   added=cmd.ExecuteNonQuery();

                   lblstatus.Text=added.ToString()+"條記錄已插入";

               } 

              Catch(Exception err)

              {

                    lblstatus.Text="錯誤:"+err.Message;

              }

        finally

               {

                    con.Close();

               }

        }

        使用參數化的數據命令,參數值已經從sql命令中移除,并添加到了Parameters集合中。這樣,在參數值中出現的引號或者sql語句片段將不會對sql命令的執行造成任何問題。這樣也就可以防sql注入式攻擊。

        增、刪、改功能都可以用這種參數化數據命令寫sql語句。

    posted on 2012-05-29 15:13 SkyDream 閱讀(398) 評論(0)  編輯  收藏 所屬分類: ADO.NET

    <2012年5月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久精品视频免费看| 成人免费视频一区二区| 99久久综合精品免费| 国产亚洲av片在线观看16女人 | 亚洲首页国产精品丝袜| 99久久99久久免费精品小说| 亚洲国产精品久久久久| 久别的草原电视剧免费观看| 亚洲成熟xxxxx电影| 色欲国产麻豆一精品一AV一免费| 久久久久亚洲精品美女| 精品国产污污免费网站aⅴ| 亚洲欧洲校园自拍都市| 一级女人18毛片免费| 亚洲欧美日韩久久精品| 国产大片91精品免费观看男同 | 国产精品亚洲lv粉色| 免费一级毛片在线观看| 一个人免费观看视频在线中文| 中文字幕亚洲第一| 日韩精品无码免费一区二区三区| 亚洲一本之道高清乱码| 好爽好紧好大的免费视频国产| 无码的免费不卡毛片视频| 亚洲色精品vr一区二区三区| 亚洲一区免费观看| 亚洲精品亚洲人成在线| 亚洲日韩中文字幕日韩在线| 久久久久国产精品免费免费不卡| 亚洲一区二区久久| 亚洲精品网站在线观看不卡无广告| 免费看少妇高潮成人片| 一区二区亚洲精品精华液| 亚洲免费一区二区| 120秒男女动态视频免费| 亚洲av无码一区二区三区在线播放 | 亚洲小视频在线播放| 宅男666在线永久免费观看| 久久精品成人免费观看| 亚洲一区AV无码少妇电影| 久久久久亚洲AV成人网|