2011-07-21 16 views
0

私は、ストアドプロシージャを3回実行して失敗すると宣言する前に、この特定の状況が発生します。なぜなら、以前に開始されたジョブが終了したかどうかをチェックするためです。よりよいアプローチがあるかどうかを決めるために別の質問をするつもりです。しかし、今のところ私がやっていることがここにあります。SqlParameterCollection.Clearメソッドを使用した副作用はありますか?

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 
} 

今、この時折私は、このエラーを与えた:

The SqlParameter is already contained by another 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

オーバーヘッド以外に、共有される可能性のある他のコードを破る場合を除き、パラメータのクリアに問題はありません。

+0

私の共有メソッドを示す私の更新されたコードをチェックしてください。 – gbs

+0

問題はありません。 – Josh

1

私はこのメソッドを使用したときに副作用に遭遇していません。

関連する問題