- PR -

OleDbDataReaderでストアドプロシージャで実行した検索結果を読み込みたい。

投稿者投稿内容
たけたけ
会議室デビュー日: 2003/05/27
投稿数: 7
投稿日時: 2003-07-22 12:14
私もマニュアルやネットなどをよく調査してみます。
まだまだ、やりたい事に対して分らない事が山積みで(;_;)
何度もお答え頂いてありがとうござました。

ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2003-07-22 12:21
役に立たないかもしれない古い情報ですみません。

VB6での実績ですが、Oo4oでOracleのPL/SQL表を使ったことがあります。
.NetでもOo4oが使えるようなのでひょっとして...

# でもVB側配列とPL/SQL表とのやり取りはループさせてセットしたような...
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-22 17:46
 コネクションプールの件ですが、OleDBでも自動で管理されます。
MSDNのトピック「ADO.NET 接続デザインツールの概念」を参照してください。
キーワードで「OleDbConnection クラス」を入力すると、その中にあります。

引用:

たけたけさんの書き込み (2003-07-20 20:43) より:
後、データベースサーバからのデータ読み取りが1回で終わる方法なんてないのでしょうか?
DataReaderを使用して1件、1件、データベースサーバからデータを読み取るのは効率が悪いと思うのです。
またDataReaderは資料によると一度使用すると、Connection Closeまでしないと
ダメだと書かれてるんですよね。
別の検索SQLを実行する度にConnectするのも効率悪いな感じるのです。


 DataAdapterでDataTableにFillする、っていうのではなく?
これも結局、内部でDataReaderをぐるぐる回しているはずなので、同じではないでしょうか?

.NET DataProvider for Oracleでは、複数のDataReaderをオープンできるようです。
私は今のところ、一回一回Closeしていますが、特にそれを不便とは感じていません。
必要なら、DataTableとDataAdapterを作り、オフラインで更新後、
Updateで一括処理、ということもできますし・・・

※2度目以降の実行は最適化されるんだっけ

追加情報:
DataReaderでぐるぐる回す処理を、DataAdapterで取得する処理に変えると、
0.2秒台で終わっていた処理が2秒台に・・・10倍も遅くなりました。
件数80件なので、参考にもならないかもしれませんが。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-07-23 11:28 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-07-23 11:48
引用:

Jittaの書き込み (2003-07-22 17:46) より:

追加情報:
DataReaderでぐるぐる回す処理を、DataAdapterで取得する処理に変えると、
0.2秒台で終わっていた処理が2秒台に・・・10倍も遅くなりました。
件数80件なので、参考にもならないかもしれませんが。。。


失礼、例外が発生していました。
#いいわけ:
#VS.NET2003だと、勝手に「catch ex as exception」を入れてしまうので、
#例外の発生に気が付いていなかった。
#例外がいかに重たい処理か、よくわかった。

正しくは、0.28秒→0.34秒で、約0.06秒遅くなっていました。

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