C# 使用sqlcommand.parameters.addwithvalue添加参数

C# 使用sqlcommand.parameters.addwithvalue添加参数,c#,asp.net,sql,sqlcommand,C#,Asp.net,Sql,Sqlcommand,我无法从以下代码获得任何响应: using (SqlCommand cmd = new SqlCommand(@"SELECT * FROM users WHERE @parameter LIKE @value", con)) { cmd.Parameters.AddWithValue("parameter", parameter); cmd.Parameters.AddWithValue("value", value); SqlDataReader result =

我无法从以下代码获得任何响应:

using (SqlCommand cmd = new SqlCommand(@"SELECT * FROM users WHERE @parameter LIKE @value", con))
{
    cmd.Parameters.AddWithValue("parameter", parameter);
    cmd.Parameters.AddWithValue("value", value);

    SqlDataReader result = cmd.ExecuteReader();

    return result.HasRows;
}
每次都是假的


有人知道为什么吗?

这在SQL中是不正确的语法

SELECT * FROM users WHERE @parameter LIKE @value
应该是

SELECT * FROM users WHERE parameter = @parameter LIKE @value
要添加类似的参数,请执行以下操作

cmd.Parameters.AddWithValue("@value","%" + value + "%");
cmd.Parameters.AddWithValueparameter,参数

SqlCommand将推断参数是字符串,因此将引用该参数,从而得出:

SELECT * FROM users WHERE 'xxx' LIKE 'yyy'
这将是错误的


通过净化字符串添加字段名。格式化/连接。

首先,SQL Server参数有一个前导@,您没有提供。但更重要的是——您不能为列名传递参数——如果您想这样做,您需要使用动态SQL,它有所有的缺点、缺点和缺点。谢谢您的评论。有什么优雅的方法吗?