投稿者 MMTRS  (社会人) 投稿日時 2010/6/22 21:08:13
SqlConnectionとSqlDataReaderについての質問です。

通常、SqlConnectionの接続文字列にMultipleActiveResultSets(MARS)について特に記述しなければ、
MARSはOFF(False)となって、同じ接続で複数のSqlDataReaderを同時に取得することはできませんよね?

ところが今開発中のプログラムで、SqlDataReaderをCloseしていないのに同じ接続で
新しくSqlDataReaderを取得できてしまっています。
正確には、同じ処理を繰り返し行っていると何度目かにようやく例外が発生します。

処理の流れは下の通りです。

1.TextBox1に文字を入力
2.入力された値を元にデータベースからデータを取得(←ここでCloseしていない)
3.TextBox2に文字を入力
4.入力された値を元にデータベースからデータを取得(←ここではCloseしている)

1~4を繰り返していると4でデータを取得しようとした時に
「このコマンドに関連付けられている DataReader が既に開かれています。~」
の例外が発生します。

SqlConnectionはモジュールレベルで画面表示時にOpenしています。
SqlDataReaderは2,4どちらもプロシージャで宣言しています。

考えられる原因と対処法など教えていただければ幸いです。