2013-05-17 112 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