--網上提供各種exec動態執行的寫法不利於複雜語句處理,針對in問題參數化防注入處理
方法1、(缺陷:in僅支持256)
var sql ="select * from tb where 1=1 "; var param = new Dictionary<string, object>(); var productids = productid.Split(','); if (productids.Length > 1) { var paramList = new List<string>(); for (int i = 0; i < productids.Length; i++) { var param1 = "@productid_" + i; paramList.Add(param1); param.Add(param1, productids[i]); } sql += string.Format(" and new_partsid in ({0}) ", string.Join(",", paramList)); } else { sql += " and new_partsid=@productid"; param.Add("@productid", productid); } var dt=Db.Query(sql, param);
方法2、SELECT -- UNION ALL 參數化與方法1類似,可以無限制的解決方法1數量限制問題