- PR -

ODP.NETに関して

投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-05-25 14:52
ODP.NET、ASP.NET2.0 を使用して
Oracle10gに対して接続を試みております。

SQLを実行すると、
sql plus , object blowserで一瞬で帰ってくる処理が、
10秒、20秒かかってしまいます。
トレースしたところ、
adp.Fill(ds, "dummy")
の部分で時間を食っておりました。

実際DBから取得するデータは300行 Varchar2(10)を10フィールドです。

なにか設定がまずいのでしょうか?
それともこんなに時間の掛かるものでしょうか?

cn:OracleConnection
adp:OracleDataAdapter
cmd:OracleCommand
ds:dataset


' Oracle Connection Object設定
cn.ConnectionString = *****
cn.Open()

' Oracle Command Object設定
cmd.Connection() = cn
cmd.CommandText() = "SELECT *****"

' Oracle Data Adapter Object設定
adp.SelectCommand() = cmd
adp.Fill(ds, "dummy")

' Data Bind
DataGrid1.DataSource() = ds
DataBind()
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-25 15:36
引用:

Kiraさんの書き込み (2006-05-25 14:52) より:

トレースしたところ、adp.Fill(ds, "dummy")
の部分で時間を食っておりました。


DataReader の場合も同様か、確認してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-05-25 15:41
DataReaderを使用した場合
すぐに返事が返ってきます。

DataReader = cmd.ExecuteReader
としたところ、すぐに返事は返ってきたのですが、
DataGrid.DataSource = DataReader
DataBind()

がうまくできませんでしたが。。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-25 15:55
引用:

Kiraさんの書き込み (2006-05-25 15:41) より:

DataReaderを使用した場合すぐに返事が返ってきます。


ということは、詰め込むのに時間を浪費しているということですね。
応答ならともかく... なんでしょうね。

引用:

DataReader = cmd.ExecuteReader
としたところ、すぐに返事は返ってきたのですが、
DataGrid.DataSource = DataReader
DataBind()
がうまくできませんでしたが。。。


そりゃ、DataReader は DataSource じゃないですからね。
(問題を切り分けるためであり、解決策ではありません)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-25 18:14
引用:

Kiraさんの書き込み (2006-05-25 15:41) より:

DataReader = cmd.ExecuteReader
としたところ、すぐに返事は返ってきたのですが、


コード:
OracleDataReader dr = cmdExecuteReader
while (dr.read) {


の時間を計ったらどうなりますか?
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-05-25 19:40
toじゃんぬねっとさん

確かに解決策にはなりませんが、
結果表示までどれくらいかかるか知りたかったもので。。。

また、
DataReader = cmd.ExecuteReader
datagrid.datasource = DataReader
databind
では、結果が表示されませんでした。
DataReaderからdatasourceが認識できるようにするにはどうすればよいのでしょうか?

toかるあさん
 while文を追加しても結果はすぐに返ってきます。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2006-05-25 20:13
toかるあさん

もうしわけございません。
Whileを実行しているとやはり
fillどうよう時間がかかります。

Fetchの部分で時間がかかるんでしょうか
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-25 21:36
引用:

Kiraさんの書き込み (2006-05-25 20:13) より:

もうしわけございません。
Whileを実行しているとやはり
fillどうよう時間がかかります。


うーん、件数もそんなに多くなさそうだし何ででしょうね
とりあえず、

・Oracle(Server) のバージョン
・Oracle(Client) のバージョン
・ODP.NET のバージョン
・開示できる範囲での接続文字列
・OS認証の有無
を詳細に教えてもらえますか?

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