0

スタックトレースは、ExecuteReaderがExecuteScalarの基礎となるメソッドであることを示しています。関連するコマンドの動作を調べているときに、以下の投稿を見つけました。これは、commandbehaviour.defaultがリーダーによって使用されることを示しています。

ExecuteScalar()には、ExecuteReader()よりも優れた利点がありますか?

datareader.close()、datareader.dispose()を使用して、接続を常に明示的に閉じて破棄できることを認識しています。ただし、ExecuteReader(commandbehaviour.Closeconnection)が使用されます。一方、ExecuteReader(CommandBehaviour.Default)は、データリーダーオブジェクトが閉じられているか、破棄されている場合でも、基になる接続を開いたままにします。だから私の質問は、executescalarがデフォルトの動作を使用している場合、スカラー値が取得されたら、基になる接続が閉じられていることを確認するにはどうすればよいですか?

4

1 に答える 1

1

C#usingステートメントは、この言語に含まれている最高のものの1つです。問題を直接解決するわけではありませんが、SQLConnections(およびIDisposableを実装する他のタイプ)をラップするためにそれを使用する標準的な習慣を身に付ければ、この種のことの多くを心配する必要はありません...

using(SQLConnection connection = new SQLConnection(...))
{
}
于 2011-02-28T20:27:20.740 に答える