簡體   English   中英

如何參數化這段代碼?

[英]How can I parameterize this piece of code?

我有這段代碼,我想阻止SQL注入......

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

我試着這樣做:

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

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

我有一個帶有字段的表單,我輸入了表Cliente中存在的ID,單擊按鈕,它會將黑名單字段更新為'true',其中ID與我在文本框中鍵入的ID相同。

改變這個:

MySqlCommand command = 
  new MySqlCommand("Update Cliente set blacklist=@bl WHERE ID ='" + "@id" + "'", 
                   mConn);

對此:

MySqlCommand command = 
  new MySqlCommand("Update Cliente set blacklist=@bl WHERE ID =@id", 
                   mConn);

您不需要在SQL代碼中引用參數,使用參數的整點是讓數據庫引擎處理數據替換。

第二個參數不起作用,因為您用單引號將其包裝起來。 刪除參數周圍的單引號,它將起作用。 請記住,參數是標識符,而不是字符串文字。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM