首先,我正在使用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注入
答案 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, "%"));