質問

この文では:

myCommand.ExecuteReader(CommandBehavior.CloseConnection)

例外の場合に接続を閉じますか?

役に立ちましたか?

解決

コマンドが間違っている可能性のある方法はたくさんあります。

最後に何も問題がなければ、接続を閉じるのはデータリーダーのCloseメソッドです。

実際のDataReaderオブジェクトが構築される前に、ExecuteReaderまたはその呼び出されたメソッド内で例外が発生した場合、いいえ、接続は閉じられません。

例外の場合、接続を閉じるとは信じません。

他のヒント

「通常」を行う最も安全な方法クエリは

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "...";
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                // ...
            }
        }
    }
}

このコードの外側で例外をキャッチできます。

例外の発生場所によって異なります!

try catchを正しく構成すれば、問題ありません。

例:

SqlCommand myCommand = new SqlCommand();

try
{
   myCommand.dostuff();
}
catch(Exception ex)
{
  // display error message
}
finally
{
  myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}

行:myCommand.ExecuteReader(CommandBehavior.CloseConnection)が失敗した場合(データベースがダウンした可能性がありますか?)、プログラムで接続を閉じることはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top