我有这种特殊情况,我需要在声明失败之前执行存储过程3次。为什么3次,因为要检查之前开始的工作是否完成。我将问一个单独的问题来决定是否有更好的方法。但就目前而言,我正在做的事情。
mysqlparametersArray
do{
reader = MyStaticExecuteReader(query,mysqlparametersArray)
Read()
if(field(1)==true){
return field(2);
}
else{
//wait 1 sec
}
}while(field(1)==false);
MyStaticExecuteReader(query,mysqlparametersArray)
{
//declare command
//loop through mysqlparametersArray and add it to command
//ExecuteReader
return reader
}
现在偶尔会给我这个错误:
SqlParameter已被另一个包含 SqlParameterCollection。
在做了一些搜索之后,我得到了这个解决方法来清除参数集合,所以我这样做了:
MyStaticExecuteReader(query,mysqlparametersArray)
{
//declare command
//loop through mysqlparametersArray and add it to command Parameters Collection
//ExecuteReader
command.Parameters.Clear()
return reader
}
现在我没有收到这个错误。
问题:上面使用.Clear()方法有副作用吗?
注意:以上是一个示例伪代码。我实际上执行读者并在DAL类中的单独方法中创建参数集合,其他人也使用它。所以我不确定在添加任何参数之前检查参数集合是否为空是一个很好的方法。
答案 0 :(得分:1)
当我使用这种方法时,我没有遇到任何副作用。
答案 1 :(得分:0)
除了开销或可能破坏共享的其他代码之外,清除参数没有问题。