使用parameter.addwithvalue从此SQL查询得到的无意义结果

时间:2016-01-03 20:58:33

标签: asp.net sql-server

首先,我正在使用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注入

1 个答案:

答案 0 :(得分:0)

试试这个: 首先修改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, "%"));