此SQL查询使用参数.addwithvalue得到了无意义的结果



首先,我使用的是ASP.NET,每当我在SQL Server上执行查询时,它都能正常工作,但当我从ASP.NET执行查询时会返回0行-这怎么可能呢?

这是我的代码:

asp.net:

List<string> tmp = new List<string>();
string value = "hello"
sql = "select a.id AID from article a where a.TheArticle like (N'%finder.aspx?hashtag=@data%')";
using (var sqlc = new SqlCommand(sql, con))
{
    sqlc.Parameters.AddWithValue("@data",value);
    using (var reader = sqlc.ExecuteReader())
    {
        while (reader.Read())
        {
            tmp.Add(reader["AID"].ToString().Trim());
        }
    }
}

这是SQL Server上的查询:

select a.id 
from article a 
where a.TheArticle like (N'%finder.aspx?hashtag=hello%')

我认为parameter.addwithvalue指令使SQL字符串变成这样:

select a.id AID
from article a
where a.TheArticle like (N'%finder.aspx?hashtag='hello'%

我真的不知道刚刚发生了什么,所以请有人向我解释一下。

:我想阻止SQL注入以及

试试这个:首先修改sql命令如下:

sql = "select a.id AID from article a where a.TheArticle like (N'%finder.aspx?hashtag=@data')"

然后:

sqlc.Parameters.AddWithValue("@data", string.Concat(value, "%"));

最新更新