我如何参数化这段代码

本文关键字:代码 段代码 参数 何参数 | 更新日期: 2023-09-27 18:14:19

我有这段代码,我想防止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();

黑名单是bool所以1 = true。它没有给出任何错误,但是它不工作,它应该是这样工作的:

我有一个带有字段的表单,我放入一个存在于表client中的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代码中引用参数,使用参数的全部意义是让DB引擎负责数据替换。

第二个参数不起作用,因为您用单引号括住了它。去掉参数周围的单引号,它就可以工作了。请记住,形参是标识符,而不是字符串字面值。

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