數據庫IN查詢參數化改造的方法


                // 批量查詢的 2019-05-14 
                if (!string.IsNullOrWhiteSpace(Request["userCodes"]))
                {
                    string userCodes = Request["userCodes"].Replace("\r", "").Replace("", ",").Replace(" ", "").Trim('\n').Trim();
                    userCodes = Regex.Replace(userCodes, "\n+", ",");
                    string[] userCodeArry = userCodes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    // 需要去重
                    userCodeArry = userCodeArry.Distinct().ToArray();

               // In內容沒有參數化 
              // List<string> listCode = new List<string>();
                    //foreach (var item in userCodeArry)
                    //{
                    //    listCode.Add(SecretUtilitiesBase.SqlSafeOrderBy(item));
                    //}
                    //listCondition.Add(" CODE IN (" + BaseBusinessLogic.ObjectsToList(listCode.ToArray(), "'") + ")");

                    // 2019-06-21  參數化改造,避免硬解析
                    List<string> codeParameters = new List<string>();
                    Dictionary<string, object> codeConditions = new Dictionary<string, object>();
                    foreach (var code in userCodeArry)
                    {
                        codeParameters.Add(dbHelper.GetParameter("P_" + code));
                        codeConditions.Add("P_" + code, code);
                    }
                    listCondition.Add(" CODE IN (" + codeParameters.Join(",").TrimStart(",").TrimEnd(",") + ")");
                    dbParameters = dbParameters.Concat(codeConditions).ToDictionary(k => k.Key, v => v.Value);
                }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM