スタックトレースは、ExecuteReaderがExecuteScalarの基礎となるメソッドであることを示しています。関連するコマンドの動作を調べているときに、以下の投稿を見つけました。これは、commandbehaviour.defaultがリーダーによって使用されることを示しています。
ExecuteScalar()には、ExecuteReader()よりも優れた利点がありますか?
datareader.close()、datareader.dispose()を使用して、接続を常に明示的に閉じて破棄できることを認識しています。ただし、ExecuteReader(commandbehaviour.Closeconnection)が使用されます。一方、ExecuteReader(CommandBehaviour.Default)は、データリーダーオブジェクトが閉じられているか、破棄されている場合でも、基になる接続を開いたままにします。だから私の質問は、executescalarがデフォルトの動作を使用している場合、スカラー値が取得されたら、基になる接続が閉じられていることを確認するにはどうすればよいですか?