首先,我使用的是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, "%"));