Параметрированные запросы в .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;
Где
- CategoryID - это список номеров, разделенных запятыми "123 456 789" (без кавычек).
- Имя - это строка, возможно с одинарными кавычками и другими плохими символами.
Какой правильный синтаксис для этого?