C# 如何在c中的sql中指定一个变量?

C# 如何在c中的sql中指定一个变量?,c#,asp.net,sql,C#,Asp.net,Sql,我正在将数据插入asp.net中的数据列表。我需要根据需要修改Select命令。我是这样做的 string query = "SELECT [movieName], [sDate], [eDate], [IMDb], [imageUrl] FROM [movieDrama] WHERE ([category]='Drama' AND [movieName] like '%@key%') ORDER BY [movieName]"; SqlCommand cmd = new SqlCommand(

我正在将数据插入asp.net中的数据列表。我需要根据需要修改Select命令。我是这样做的

string query = "SELECT [movieName], [sDate], [eDate], [IMDb], [imageUrl] FROM [movieDrama] WHERE ([category]='Drama' AND [movieName] like '%@key%') ORDER BY [movieName]";
SqlCommand cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@key", key);
SqlDataSource1.SelectCommand = query;
但这是行不通的。我想我在定义“@key”时做错了什么。如何以正确的方式做这件事?提前感谢…

仅此而已:

string query = "SELECT [movieName], [sDate], [eDate], [IMDb], [imageUrl] FROM [movieDrama] WHERE ([category]='Drama' AND [movieName] like @key) ORDER BY [movieName]";
然后

像这样使用它

LIKE '%' + @key + '%'
而不是

LIKE '%@key%'
用于完整查询

string query = "SELECT [movieName], [sDate], [eDate], [IMDb], [imageUrl] FROM [movieDrama] WHERE ([category]='Drama' AND [movieName] LIKE '%' + @key + '%') ORDER BY [movieName]";
SqlCommand cmd = new SqlCommand(query);
cmd.Parameters.AddWithValue("@key", key);

实际上,您不需要在查询的每一列都使用方括号,只需在需要使用某些列作为列名时使用即可。

尝试为sqlCommand提供连接参数:

    SqlCommand cmd = new SqlCommand(query,YOURCONNECTIONSTRING);
    cmd.Parameters.AddWithValue("key", key)

这不是真正动态的,如果他想将其更改为%key而不是%key%,该怎么办?当然,他必须修改查询。@LIH您调试代码了吗?当您输入cmd.Parameters时,您的查询是什么样子的。AddWithValue@key钥匙行?您是否尝试过使用适当的值手动运行结果查询?它给出了必须声明标量变量@key'@LIH的结果,这意味着您的代码中没有名为key的变量。此键来自何处?@LIH如果从查询中删除所有与[movieName]类似的@key怎么办?@LIH返回空结果并不意味着它不起作用。您应该尝试在查询编辑器中执行相同的查询,以查看它是否返回任何结果。或者您应该发布一些示例键和记录。如果它返回此错误,则必须声明标量变量@key@LIH这是什么SqlDataSource1.SelectCommand=query;?我想你是指SqlDataSource1.SelectCommand=cmd;?我试过了。然后给出了这个错误。在sys.servers中找不到服务器“System”。验证是否指定了正确的服务器名称。如有必要,执行存储过程sp_addlinkedserver将服务器添加到sys.servers。
    SqlCommand cmd = new SqlCommand(query,YOURCONNECTIONSTRING);
    cmd.Parameters.AddWithValue("key", key)