- - PR -
DataReaderの値をテーブルにinsert
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-14 15:25
いつもお世話になっています。
VB2003、ADO.NETで開発を行っています。 DBからselect文で抽出したデータをDataReaderに格納し、 DataReaderから、テーブルへinsertしています。
上記のようにループさせていますが、 パフォーマンスが悪いので、 insert into テーブル名 select * from DataReader のように、ループさせないでinsertしたいのですが、 ご存知の方、ご教授お願いします。 | ||||||||
|
投稿日時: 2006-09-14 15:28
DataReaderに格納しなければいいだろ。
何のために格納するんだろ? | ||||||||
|
投稿日時: 2006-09-14 15:38
上に同じく、不思議です。
データリーダーに吐き出すための SQL と insert 文をまとめちゃえば良いのでは? | ||||||||
|
投稿日時: 2006-09-14 16:49
ぶさいくろうさん、R・田中一郎さん
いつもありがとうございます。 質問の仕方が悪く、申し訳ございません。 DataReaderに一度格納するのは、 selectで抽出するDBがOracleで、 insertするDBがaccessだからです。 異なるDBだとinsertができなかったので、 DataReaderに格納後insert処理を行っております。 | ||||||||
|
投稿日時: 2006-09-14 17:06
取得元と行き先が違うんだったら結局1件1件やらなきゃダメでしょう。
Oracle用の参照DataAdapterを使ってDataSetにでもロードしておいて 行のRowStateをAddedに変更してから、Access用の更新DataAdapterで そのデータをinsertしてやるとか。 | ||||||||
|
投稿日時: 2006-09-14 22:45
Oracle から Access って、データベースリンクを張れないんだっけ?
張れるみたいね。 同一マシン上にてOracleからAccessへDBリンクの張り方 link to oracle.co.jp 検索キーワード:「oracle データベースリンク access」 INSERT INTO "ACCESSのテーブル名"@dblink.name ("カラム1", ...) (SELECT "カラム名A", ... FROM "ORACLEのテーブル名") 文字列連結で SQL 文を作成すると、インスタンス化をしたり、データベースの側でも SQL 文の解析などで時間がかかります。パラメータを使い、準備済み SQL 文を使うことで、かなりの性能改善が見込めます。また、セキュリティ上も、安全性が高くなります。 | ||||||||
|
投稿日時: 2006-09-18 18:08
Jittaさん、こんにちは。
一応、AccessからOracleのリンクテーブルを作成すると、 Accessのテーブルとして使用できるようになりました。 ただ、今後のためにVBでリンクテーブルを使用したいのですが、 Webで調べてもよく分かりません。
create文を、VBのボタンクリックイベントで記述できないので、 参照設定が足りないか、そもそもVB.NETで使用できないかだと思います。 そのあたり、ご存知でしょうか? | ||||||||
|
投稿日時: 2006-09-18 23:45
??? OracleClientCommand かな?の、Text プロパティに、"CREATE DATABASE LINK ..." を設定して、ExecuteNoQuery だっけ?で実行すればいいのでは? 「記述できない」って、どういう意味??? |
1