- PR -

OracleDataReaderでの不具合

投稿者投稿内容
IZ
会議室デビュー日: 2005/12/19
投稿数: 8
投稿日時: 2005-12-23 01:42
お世話になっております。

現在OracleDataReaderを用いてデータ取得を行っているのですが、取得するデータによってうまくいかない場合が発生します。
現象としては
cmd.CommandText = SQL文 ←このSQL文をオブジェクトブラウザから流しても問題なし
dr = cmd.ExecuteReader ←データは取得できている
Do While dr.Read() ←この時点でdrにアクセスするとdr.Read()が強制的にFalseになりループに入らない。(どうやらdrが強制的にdisposeされている?)

といった状況です。
また、SQL文によってはうまくいくことも確認しております。

どなたか同じ現象が発生した方、また、思い当たることがある方はご助言いただけますでしょうか。よろしくお願いいたします。


IZ
会議室デビュー日: 2005/12/19
投稿数: 8
投稿日時: 2005-12-23 03:37
検証を重ねたところ、どうやら抽出データが1件の時のみ発生する現象とわかりました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-23 08:45
引用:

IZさんの書き込み (2005-12-23 01:42) より:

Do While dr.Read() ←この時点でdrにアクセスするとdr.Read()が強制的にFalseになりループに入らない。(どうやらdrが強制的にdisposeされている?)


Disposed を見た上での話ですか?

引用:

といった状況です。
また、SQL文によってはうまくいくことも確認しております。


ならば、その SQL 文をここに出せば解決しやすくなるでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2005-12-23 10:16
引用:

Do While dr.Read() ←この時点でdrにアクセスするとdr.Read()が強制的にFalseになりループに入らない。


 デバッガでウォッチしてるとOracleDataReader.Read()が実行されて
次の行に行っちゃうんじゃないかな。

引用:

検証を重ねたところ、どうやら抽出データが1件の時のみ発生する現象とわかりました。


で、1件のときはもうデータがない、とか。
複数行のときは最初の1行が取得できない、とか。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-12-23 14:37
引用:

 デバッガでウォッチしてるとOracleDataReader.Read()が実行されて
次の行に行っちゃうんじゃないかな。


それだ!
実行するたびにオブジェクトの状態が変更されるメソッドをウォッチするときは要注意ですよね。何度嵌った事か…。

ウォッチで実行したものも「現場で実行される」。
_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-23 17:42
デジャヴュではなかったようですね。(^^;)

  IDataReaderのread()メソッドの実装について

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2005-12-23 17:53
 誰もが通る道、か。

 いやいや、決め付けてはいかんですよ。
これはきっとOracleDataReaderの重大なバグの発見に違いないよ、うん。
IZ
会議室デビュー日: 2005/12/19
投稿数: 8
投稿日時: 2005-12-26 00:14
申し訳ございません。仰るとおりのウォッチ式の問題でした。。。
このような事でお騒がせして申し訳ありませんでした。そして皆様の深い経験にただ感服するばかりです。本当にありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)