C# in 參數化處理 (記)

--網上提供各種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數量限制問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章