C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: dataset → dataleader へ


(過去ログ 60 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■34776 / inTopicNo.1)  dataset → dataleader への変更。
  
□投稿者/ みちる (1回)-(2009/04/08(Wed) 23:41:01)

分類:[データベース全般] 

こんばんは。初めて掲示板に書き込みさせていただきます。

今、プログラムの改修をしているのですが、
その既存のプログラムでしてる作業がdatasetを使ってdataの操作をしているのです。
コンボボックスに表示して、そのコンボボックスに変更があれば
それをdatasetに反映させて、テーブルへの反映をしているのですが、
改修として、なるべくdatareaderを使う事をしなくちゃいけなくて、
読み込むことは、出来るにしても、datasetと違って、読み取り専用のdatareaderでは一気に
更新をかける事はやはり無理でしょうか?

こんな解りずらい質問をしてすいませんが、出来ない!と言い切れる自信も無く、
出来ないなら、作り直したほうがいいのでは?と提案さえ出来ない状態で。。。。

同じような経験があったり、なにか代わりになるようなコーディングの考え方などが
ありましたら、なんでもいいので、アドヴァイスを頂戴したくここへ書き込みしました。

よろしくお願いします。
引用返信 編集キー/
■34777 / inTopicNo.2)  Re[1]: dataset → dataleader への変更。
□投稿者/ オショウ (143回)-(2009/04/08(Wed) 23:55:19)
> 改修として、なるべくdatareaderを使う事をしなくちゃいけなくて、
> 読み込むことは、出来るにしても、datasetと違って、読み取り専用のdatareaderでは一気に
> 更新をかける事はやはり無理でしょうか?

※ DataReader って、SqlDataReaderを前提にしてます。

  DataReaderは、基本、selectしたものを読みだすのに使用します。
  よって、更新するには、SqlCommand等を使って、updateするしかありません。

  ADO.NETの接続型と非接続型の区別をまずつけないと、混同していたら
  やりたいことができませんヨ!

  DataSetは、SqlDataAdapter等使って行う方法は非接続型です。

  ttp://www.atmarkit.co.jp/fdotnet/basics/adonet02/adonet02_01.html

以上。
 
引用返信 編集キー/
■34778 / inTopicNo.3)  Re[2]: dataset → dataleader への変更。
□投稿者/ みちる (2回)-(2009/04/09(Thu) 00:09:24)
ありがとうございます。

> ※ DataReader って、SqlDataReaderを前提にしてます。

すいません、その通りです。

>   DataReaderは、基本、selectしたものを読みだすのに使用します。
>   よって、更新するには、SqlCommand等を使って、updateするしかありません。

SqlCommandはdatasetと同じように非接続型なんでしょうか?
やはり、datasetの代用をSqlDataReaderでするのは無理がありますよね。。。。

確かに接続型と非接続型の線引きが自分でもまだよく解っていないようです。
書き込みありがとうございました。
なんだか、変な言い方かもしれませんが、ずっと一人で悩んでいたので
アドヴァイスを頂けて、とてもほっとした気持ちとうれしい気持ちです。

>   ttp://www.atmarkit.co.jp/fdotnet/basics/adonet02/adonet02_01.html

このホームページを明日、会社でじっくり読んでみます。
引用返信 編集キー/
■34780 / inTopicNo.4)  Re[3]: dataset → dataleader への変更。
□投稿者/ なちゃ (266回)-(2009/04/09(Thu) 00:51:41)
素朴な疑問なんですが

>改修として、なるべくdatareaderを使う事をしなくちゃいけなくて、
なんででしょう?
理由は聞いてます?

なんとなく、DataSetはDataReaderより遅いとかどっかで聞いて、短絡に、じゃあDataReaderでとか言ってそうな気がしてしまうんですが…

引用返信 編集キー/
■34785 / inTopicNo.5)  Re[3]: dataset → dataleader へ
□投稿者/ はつね (992回)-(2009/04/09(Thu) 09:31:26)
はつね さんの Web サイト
2009/04/09(Thu) 09:44:02 編集(投稿者)

No34778 (みちる さん) に返信
> SqlCommandはdatasetと同じように非接続型なんでしょうか?

つかっている間、ずっとコネクションをつなげてないとエラーになります。

DataSet(つまりDataAdapter)もDataAdapterからDataSetに値を設定するまでは接続していますが、
DataSetに取り込んでしまえばコネクションは切れていても問題ありません。

参考資料:
http://hatsune.wankuma.com/seminer/tokyo20/index.aspx


> 読み取り専用のdatareaderでは一気に更新をかける事はやはり無理

DataReaderでは更新はかけられずSqlCommandを仕立て上げて1レコードづつ更新しないとダメです。

DataAdapterよりDataReaderが優れているのは
・メモリを圧迫しない。10万件とかDataSetに読み込んだら。。。。
・1行読んで1行書き出すような処理
という感じです。
メモリを圧迫しない程度の量だったらドンと読んでDataSet上で変更をかけてドンと書き出せるDataAdapterの方が有利です。


でしょうか?

引用返信 編集キー/
■34830 / inTopicNo.6)  Re[4]: dataset → dataleader へ
□投稿者/ みちる (3回)-(2009/04/10(Fri) 21:16:43)
お返事が遅くなってしまってすいません。

なちゃさんのおっしゃるように、確認をしてみました。
やはり現行のプログラムを大幅に改修してまでDATASETを使わないようにする事は
しなくてもいいとの事でした(笑)

処理するデータの件数によってはDATASETが有効だったりdataReaderの方が良かったり。。
って感じでみたいでした(涙)

なちゃさん、鋭すぎます。

そしてはつねさんの説明、とても参考になりました。
ありがとうございます。
私も人に解りやすく説明が出来るくらい理解を深めたいです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -