我已经毫无问题地使用了参数化查询,但是今天我遇到了一个我无法调试的错误。这是我的工作查询
cmd.CommandText = "select idcliente, ragsociale from Clienti where idcliente =" & strName & " or codiceamministrazione='" & strName & "' or piva='" & strName & "' or codfisc='" & strName & "'"
相同,但有参数,不起作用
cmd.CommandText = "select idcliente, ragsociale from Clienti where idcliente = @Cliente or codiceamministrazione=@Cliente or piva=@Cliente or codfisc=@Cliente"
cmd.Parameters.AddWithValue("@Cliente", strName)
我在一个自动完成程序中使用它,该程序根据内部 id 或商业许可证号(和其他类似代码)显示客户的名称。在 db 上,客户端记录可以编译所有代码字段,也可以只编译 1 个。
使用非参数化查询会弹出自动完成建议,而使用参数化的查询则什么都不会显示。也没有错误。
编辑: 使用这个
cmd.Parameters.Add("@Cliente", SqlDbType.VarChar)
cmd.Parameters("@Cliente").Value = strName
现在,同一个函数中的另一个查询(之前省略了)可以工作,但是,奇怪的是,我做这个问题的那个没有。
在职的:
cmd.CommandText = "select idcliente, ragsociale from Clienti where ragsociale like '%'+@Cliente+'%' or codiceamministrazione=@Cliente"
还是行不通:
cmd.CommandText = "select idcliente, ragsociale from Clienti where idcliente = @Cliente or piva=@Cliente or codfisc=@Cliente"