none
SqlCommand.Parameters.ClearとSqlConnection.Closeのタイミングについて RRS feed

  • 質問

  • SqlCommand.Parameters.ClearメソッドとSqlConnection.Closeメソッドを呼ぶ順序についてお聞きしたいです。

    私は呼ぶ順序は関係がないと考えていたのですが

    先日、会社の方に「SqlConnection.Closeを先に呼べばエラーが起きるはず」と言われました。

     

    SqlCommand.Parameters.Clearメソッド

    SqlConnection.Closeメソッド

    が正しい順番なのでしょうか?

    この順番にしてしまうとパラメータ値の処理が終わるまで、コネクションをクローズできないように思います。

     

    2010年7月15日 2:30

回答

  • SqlCommand.Parameters.Clearメソッドの実行時にSqlConnectionが開いているか閉じているかは関係ありませんし、SqlCommand.ParametersがClearされていなければSqlConnectionをCloseできないわけでもありません。よって、この両者だけの順序だけに限れば、エラーになることはありません。会社の方はこの順序だけの問題ではなく、再読み込みなどのロジックを含めて気にされているのかもしれません。
    ちなみにUsingステートメントを使うことが多いので、SqlConnection.Closeメソッド自体を呼ぶことは少なくなっています。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク retuja666 2010年7月15日 5:44
    2010年7月15日 4:47
    モデレータ

すべての返信

  • SqlCommand.Parameters.ClearメソッドとSqlConnection.Closeメソッドを呼ぶ順序についてお聞きしたいです。

    私は呼ぶ順序は関係がないと考えていたのですが

    先日、会社の方に「SqlConnection.Closeを先に呼べばエラーが起きるはず」と言われました。

     SqlCommand.Parameters.Clearメソッド

    SqlConnection.Closeメソッド

    が正しい順番なのでしょうか?

    この順番にしてしまうとパラメータ値の処理が終わるまで、コネクションをクローズできないように思います。

    コネクションを閉じるのと、SqlParameterCollection を初期化するのは別次元の話なので、私は関係ないと思います。言われた方は何をソースに言われているのですかね。可能なら確認された方がいいと思います。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2010年7月15日 3:33
    モデレータ
  • SqlCommand.Parameters.Clearメソッドの実行時にSqlConnectionが開いているか閉じているかは関係ありませんし、SqlCommand.ParametersがClearされていなければSqlConnectionをCloseできないわけでもありません。よって、この両者だけの順序だけに限れば、エラーになることはありません。会社の方はこの順序だけの問題ではなく、再読み込みなどのロジックを含めて気にされているのかもしれません。
    ちなみにUsingステートメントを使うことが多いので、SqlConnection.Closeメソッド自体を呼ぶことは少なくなっています。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク retuja666 2010年7月15日 5:44
    2010年7月15日 4:47
    モデレータ
  • ひらぽん様

    相手が上司のため、逆にこちらがエラーが起きない理由を証明できるソースを提示しなければならない雰囲気です。

    しかし、様子を見て確認したいと思います。

    ありがとうございます。

    2010年7月15日 5:24
  • trapemiya様

    言葉が足らず申し訳ありません。

    結合テストが終了しているプログラムの話でして、今の所エラーは起きておりません。

    その方が「エラーが起きないのはおかしい」と言われたため、調査しておりました。

     

    エラーになる事は無いとのお話ありがとうございます。

    Usingステートメントについては、調べてみたいと思います。

    2010年7月15日 5:40