.net SqlCommand.ExecuteReaderは接続を閉じますか?
-
03-07-2019 - |
質問
この文では:
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)が失敗した場合(データベースがダウンした可能性がありますか?)、プログラムで接続を閉じることはできません。
所属していません StackOverflow