2013-05-17 142 views
0

我有這一段代碼,我想防止SQL注入......我怎麼能參數這段代碼?

MySqlCommand command = new MySqlCommand("Update Cliente set blacklist='true' WHERE ID ='" + txtid.Text +"'", mConn); 
command.ExecuteNonQuery(); 

我試着這樣做:

  MySqlCommand command = new MySqlCommand("Update Cliente set [email protected] WHERE ID ='" + "@id" + "'", mConn); 
      command.Parameters.AddWithValue("@id", txtid.Text); 
      command.Parameters.AddWithValue("@bl", 1); 
      command.ExecuteNonQuery(); 

黑名單是布爾所以1 =真。 它不給任何錯誤回報,但它不工作,它應該是這樣工作的:

我有一個字段的表單,我把存在於表Cliente的ID,點擊按鈕,它會更新其中ID是一樣的一個我在文本框中鍵入黑名單字段爲「真」。

回答

2

改變這一點:

MySqlCommand command = 
    new MySqlCommand("Update Cliente set [email protected] WHERE ID ='" + "@id" + "'", 
        mConn); 

這樣:

MySqlCommand command = 
    new MySqlCommand("Update Cliente set [email protected] WHERE ID [email protected]", 
        mConn); 

你並不需要在SQL代碼來引用參數,使用參數整點是讓DB引擎照顧的數據替代。因爲你是用單引號包裹它

+0

謝謝,它的工作:) –

0

第二個參數將無法工作。除去參數周圍的singel引號,它將起作用。請記住參數是標識符而不是字符串文字。

UPDATE Cliente SET blacklist = @bl WHERE ID = @id