參數化查詢在.net總是像這樣的例子:與LIKE和IN條件參數化查詢
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」(不帶引號)
- 名稱是一個字符串,可能帶有單引號和其他錯誤字符
什麼是正確的語法?
在「IN」clasule中,您必須在SQL命令中指定每個值。 Evenry值添加到「Parameters」集合中。 如果您通過參數值將字符串值傳遞給SQL,那麼您一定不要害怕sql注入。 – TcKs 2008-11-19 20:08:06
您可以編寫您的查詢,如`WHERE name LIKE CONCAT('%',?,'%')` – 2017-10-12 09:49:22