天天看點

出現了“另一個 SqlParameterCollection 中已包含 SqlParameter”異常

出現了“另一個 SqlParameterCollection 中已包含 SqlParameter”異常

項目中使用了把指令字元串傳入到資料操作類中的資料庫操作方式,今天看到使用直接在指令字元串中包含參數可能會造成SQL注入漏洞,于是想把指令字元串改成用參數傳入的方式,即select * from member where [email protected],然後傳SqlParameter數組(有幾個SqlParameter數組就有幾個元素)到資料庫操作方法,也就是比原來直接傳值的方式多傳一個數組。然後傳上的這個數組再在資料庫操作方法中這樣寫

for(int i=0;i<paramArr.length;i++){

sqlCom.Parameters.add(paramArr[i]);

}

這樣寫本來以為就能夠直接把參數傳過去了,沒想到一運作竟然提示出了“另一個 SqlParameterCollection 中已包含 SqlParameter”異常,用了幾種方法試了一下都不能完全解決,在網上查了一下發現這種方法很易用,而且用了以後網站确實正常了。代碼如下:

foreach (SqlParameter p in paramArr)

{

       SqlParameter pp = (SqlParameter)((ICloneable)p).Clone();

       sqlCom.Parameters.Add(pp);

}

這樣就能同時更新兩個表/資料庫中的資料了;