出现了“另一个 SqlParameterCollection 中已包含 SqlParameter”异常
项目中使用了把命令字符串传入到数据操作类中的数据库操作方式,今天看到使用直接在命令字符串中包含参数可能会造成SQL注入漏洞,于是想把命令字符串改成用参数传入的方式,即select * from member where id=@ID,然后传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);
}
这样就能同时更新两个表/数据库中的数据了;