我有一个关键词列表,存储在一个列表中。
为了从表中提取记录,我使用以下查询:
sqlBuilder.Append("SELECT name, memberid FROM members WHERE");
StringBuilder sqlBuilder = new StringBuilder();
foreach (string item in keywords)
{
sqlBuilder.AppendFormat(" LOWER(Name) LIKE '%{0}%' AND", item);
}
string sql = sqlBuilder.ToString();
也许您已经注意到,我的查询容易受到 SQL 注入攻击,因此我想使用 SqlCommand() 来使用参数。我尝试了以下方法,但仍然无法使用:
foreach (string item in keywords)
{
sqlBuilder.AppendFormat(" LOWER(Name) LIKE '%' + @searchitem + '%' AND", item);
SqlCommand cmd = new SqlCommand(sqlBuilder.ToString());
cmd.Parameters.AddWithValue("@searchitem",item);
}
我可能犯了什么错误,或者说,我该怎么做才能做对呢?
keywords
时,您都会创建新的SqlCommand
。我认为您应该在foreach
循环中使用AppendFormat
,然后在foreach
循环之外创建SqlCommand
并添加参数。 - Soner Gönül