如何在c#中给出sql内部的变量

本文关键字:sql 内部 变量 | 更新日期: 2023-09-27 18:29:44

我正在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"时做错了什么。如何以正确的方式进行?提前感谢。。。

如何在c#中给出sql内部的变量

像这样使用它;

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);

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

仅此而已:

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

然后

cmd.Parameters.AddWithValue("@key", "%"+ key + "%");

尝试为sqlCommand提供连接参数:

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