在.NET中,参数化查询在示例中始终如下所示:
SqlCommand comm = new SqlCommand(@"
SELECT *
FROM Products
WHERE Category_ID = @categoryid
",
conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
但是我在尝试做以下操作时遇到了困难:
SqlCommand comm = new SqlCommand(@"
SELECT *
FROM Products
WHERE Category_ID IN (@categoryids)
OR name LIKE '%@name%'
",
conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
这里需要用到什么语法?
- CategoryIDs是由逗号分隔的数字列表 "123,456,789" (不含引号)
- Name是一个字符串,可能包含单引号和其他特殊字符
WHERE name LIKE CONCAT('%', ?, '%')
- Salman A