SqlConnectionを接続したまま使い回す際に、下記のような記述だと
「このコマンドに関連付けられている DataReader が既に開かれています。
このコマンドを最初に閉じる必要があります。」との例外が発生してしまう。
SqlCommand cmd = new SqlCommand();
cmd = conection.CreateCommand();
cmd.CommandText = cmdText;
cmd.ExecuteReader();
cmd.Dispose();
暗黙的にSqlDataReaderが使われ、それが閉じられていない模様。
Readerで何かする用途がなくても下記のように記載してあげると、
ちゃんと閉じられ、Connectionを使いまわす事が可能
SqlCommand cmd = new SqlCommand();
cmd = conection.CreateCommand();
cmd.CommandText = cmdText;
SqlDataReader reader = cmd.ExecuteReader(); <-- 必要なくてもReader作成
reader.Close(); <-- Readerを必ず閉じる
cmd.Dispose();
一姫二太郎
2 年前
2 コメント:
ご存知かもしれませんが念のため。
そもそも、「Readerで何かする用途がない」場合は、
ExecuteReaderではなく、ExecuteNonQueryを使うほうがいいんじゃないかと思います。
これならCloseする必要もないわけで。
Leftyさん
コメントありがとうございます。
諸々の事情によりこの辺りの情報が
メンテできずにおります。
貴重な情報の提供、ありがとうございます。
コメントを投稿