[過去ログ] ADO.NETの質問・雑談スレ (981レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: 05/01/02 10:54 ID:XCpHoqqm(1/2) AAS
ADO.NETに関する質問・雑談・評価 etc
何でもどうぞ。
962: 2009/01/30(金)10:39 ID:??? AAS
アプリケーションの形態で使い分ける。
ADO.NETは疎結合が有効な場合に使おう。
963
(2): 2009/01/30(金)14:57 ID:??? AAS
>>961
専用クラスの具体的な内容は知らんけど、
DataAdapterやDataTableのイベントを利用すると結構細かい制御も利いて便利だぞ。
予め型付DataSet用意しとけば、Intellisenseも利用できるんでコーディングもそこそこ楽。

そんな感じで扱うと、適当にデータバインド利用して画面に放り込めるんで
何も意識する必要がなくて楽。

DBに戻すときは内容やデータ量で判断。
データ量が多いときや、あちこちのマスタを参照して…なんてめんどいときは、
DataSetをそのままストアドにぶち込んで処理してしまったりする。
DBのテーブルとDataSetのテーブル結合させて手抜き処理w
964
(1): 961 2009/01/30(金)20:35 ID:??? AAS
専用クラスってのは、例えば社員クラスみたいなのがあって、社員A.給与みたいなんで
給料計算してくれるみたいなのを今までやってたんだけど、datasetを使うと
foreachでまわして給与計算(社員A)みたいな感じで関数呼ぶようになるよね?
で、この給与計算する関数をどこのクラスにいれてやるのがスマートなんだろうかと
悩んでいるところなのです。
965: 963 2009/01/31(土)02:52 ID:??? AAS
>>964
数年前に給与計算やったときは、Partial Classを利用して型付DataTableの中に計算ロジック放り込んだ。

DataTableのColumnChangedイベントをチェックして、単価Columnや時間Columnなどに変更が加えられたらば
計算ロジックを呼び出して、DataTableの給料Columnを更新してやるよな感じ。

一度に全部計算するのではなく、必要な部分だけ計算・更新していくのでデバッグは楽だった。
スマートとは言えんw
966: 2009/01/31(土)04:52 ID:??? AAS
>961
俺もその辺は気になる。
datareader使ってる例の方がよく見かけるような気もするし。
967: 2009/01/31(土)17:08 ID:??? AAS
DataReader使うのはコーディングの上では手間が掛かるけど理解しやすいし
DataSet、DataTableは便利だけど使い方を調べるとき何処から手をつけていいか結構なやんだ
968: 2009/02/01(日)10:51 ID:??? AAS
ま、結局は保守や引継ぎはどの範囲で行うのかを予測した上でってことになるんだろうな。
クラスは基本的に多機能な方が便利であるが、その都度使い方を覚えなおさなければ
ならないというデメリットがついてくる。
ADO.NET そのもののバージョンアップによって仕様変更が行われることも想定すると、
動作などが単純な DataReader の方が仕様変更が少ないと思う。
となると、自分で作るプログラムは DataReader を使ったほうが流用が利きやすいのではないだろうか。

>>76 にあるように、ADO.NET は「簡単なことを簡単にすませる」という要件のものでしかないので、
そうでない状況のプログラムでは使えないので使わないほうが良いと思う。
これまでの Accessを使った、スタンドアロン、もしくはそれに近い案件の場合は、DataSetなどを
ばんばん使ったほうが早くて良いと思う。
969
(1): 2009/02/01(日)20:22 ID:??? AAS
現場のマとして条件反射で噛み付いてしまうが、
使い回しが効くという名分の元にゴミを維持・生産してるケース多すぎ。

LoopとIfが大好きで、ADO.NETに適応出来ないする気も無いって連中が
免罪符としてそれを利用することが多いのだな。
なので、明確にDataReaderでなければいけない理由を説明できないのなら
ADO.NET標準でやるようにしてくれ・・・趣味の範囲で自己完結する分にはどうでも良いけど。
970: 2009/02/01(日)20:57 ID:??? AAS
ADO.NET標準についてkwsk
971
(2): 2009/02/01(日)21:04 ID:??? AAS
>>969はどのようなコーディングを推奨しているの?
1.>>963のようなコーディング(楽なため)
2.過去ログにあるようなDataSetを使わず、DataTableに格納する方法(軽いため)
3.上記以外

もちろん、「場合による」なんて回答は辞めて欲しい。
どういう状況で、LoopやIFを使いまくってて困ってるのかを書いて欲しい。
972: 2009/02/01(日)21:29 ID:??? AAS
>>971
DataReaderで一件ずつ取って
label1.text =
label2.text = ・・・ループ回しながら繰り返し
その中で条件分岐してまた別のSQL実行してマスタの中身だけ取って来て、
その値を見てまた分岐して…みたいな。更新ときも似たようなもん。

で、途中でどこにいつ何が入ってるのか自分でもわかりにくくなったのか
Public変数使い出したりしてな。

そんな底辺会社に2度も引っかかった自分もマヌケだが
どうしてそういうコーディングするかを聞いたら使い回しが出来るんだとさ。
省1
973
(1): 2009/02/01(日)22:27 ID:??? AAS
>>971
それはダメなコーディングで969推奨のは?
974
(2): 2009/02/02(月)00:25 ID:??? AAS
>>973
普通にデータバインドぐらいは使ってくれ、
何でもかんでもLoopとIfで処理しないで、ドトネト利用してくれ。
ついでに横長テーブル作りたがる奴は死ね。
それ以上に書くことなんてあるかいな。

ダメなコーディングの理由を「流用が利く」にする連中が居て、
「他でもそうしている」(もちろん、どんなケースで何故そうしたかはスルー)を
言い訳に使いたがるのが居る。

わざわざ現場でそんな連中に言い訳くれてやんなと。

と、書いてるうちに自分も有害だと思えてきたのでこのままデスマの中で吊ってくる。
975: 2009/02/02(月)04:13 ID:??? AAS
DataReaderは、速度的にはどうなの?
976: 2009/02/02(月)07:35 ID:??? AAS
DataReader は、速度最優先で設計されてるらしい。
だから、データを読む時は一方通行にしか動かせない。

独自でベンチを計ったことは無いが、速度や軽さ優先で
あれば、DataReaderを使うしかないと思う。
977: 2009/02/02(月)20:14 ID:??? AAS
DataReaderは、速度優先で設計されてるものだから、そればかりを優先的に
使う状況もあるかもしれないが、その理由が、「流用が効く」はおかしいと思う。
特に大きな制約が無い状況で、自由に使っていいという状況であれば、
DataTableを使うのがメインになると思うけどな。さらに、Updateは
DataRowの状態を見てSQLコードを生成させる方法とか。
978
(1): 2009/02/02(月)20:50 ID:??? AAS
>>974で触れている、DataReaderを優先的に使いたがる人って、
AccessやVB6でADOをバリバリに使ってた人たちってことでおk?
あれは、こんな感じのソースを書くのが定番になるみたいだし。

' rsはrecordsetのこと
Do Until rs.EOF
' Ifなどの処理
rs.MoveNext
Loop
979: 2009/02/03(火)01:43 ID:??? AAS
using rs as Recordset = cmd.ExecuteReader
while rs.read

end while
end using
980: 2009/02/03(火)03:20 ID:??? AAS
メモリ上にDataTableやDataSetの形で置いとくより、HogeClassのListなり
Dictionaryの形で置いといた方が便利な事が多くない?

フォームへの半自動表示を考えるとDataTableの方が便利な事も
あったかもしれないけど、WPFだとデータテンプレートでその辺どうでも
よくなったし。
981: 974 2009/02/06(金)22:36 ID:??? AAS
>>978
それでおk おかげで、ここ一ヶ月酷い目にあってきたぜ。
赤字になったのは俺のせいじゃねぇ・・・orz

Dim int手数料合計 As Integer
Do Until rs.EOF
 If rs![種別] = DLookup("種別", strSQL, "区分 = 'HH1101'") THEN
   int手数料合計 = DLookup("手数料", strSQL, "区分 = 'HH1101'")
 End If

 '−脳が思い出すのを拒否してるロジック−

rs.MoveNext
省3
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.139s*