Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
SqlDataReaderをCloseしなくても例外が発生しない
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9679#CommentId15047
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
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どちらもプロシージャで宣言しています。
考えられる原因と対処法など教えていただければ幸いです。