DbDataAdapter の UpdateCommand で必要な項目だけ更新する SQL文を記述するには?

解決


こまったさん  2006-07-17 08:54:12  No: 132390

はじめまして。よろしくお願いします。

VisualBasic2005 で、DbDataAdapter を使った更新処理を開発中です。
質問は、UpdateCommand に与えるSQL文についてです。

前提として、
操作対象のテーブルの項目を A〜J として、キーを A,B,Cとします。
SELECT文で抽出する項目を、A,B,C,E,F,H とします。
更新対象は E,F,H となります。
処理内容は、対象項目は日本語項目で、半角文字が入っていたら削除をします。
つまり、実行するまでどの項目が更新対象となるかわかりません。

上記において、更新対象すべてを上書きしてかまわないのであれば、
UpdateCommand に与えるSQLは以下のようになると思うのですが、
 UPDATE テーブル名 SET E=@E, F=@F, H=@H WHERE A=@A AND B=@B AND C=@C 

今回のように変更になるところだけ更新したい場合、どのような SQL を書けばよいのでしょうか。
上記の SQL で変更になったところだけ上書きしてくれるのでしょうか?
更新対象ごとに SQL を作成し、行ごとに渡す必要がありますか?
あるいは DbCommandBuilder に任せてしまってよいものなのでしょうか。

ご指南くださいませ。


こまったさん  2006-07-17 19:59:57  No: 132391

こんにちは  追記です。

スレに書いた SQL だと、変更あるなしかかわらずパラメタのある項目すべて上書きされてしまいますよね。
そして DbCommandBuilder で作成される SQL文は上記の SQL そのもののようですね。

これを回避するには非接続型データアクセスを使わず、接続型データアクセスにするほかない気がしてきました。

どなたかアドバイスお願いします。


こまったさん  2006-07-17 20:15:34  No: 132392

落ち着いて考えられていないのがバレますが、さらに追記です。

非接続型、接続型どうこうではなく、
項目ごとに更新があったかなかったかを判断して SQL を編集して更新する必要があるのかもということです。

たすけて〜(汗


こまったさん  2006-07-18 02:08:33  No: 132393

自己レスで解決ということで^^;

私の知りたいことは、
http://www.accessclub.jp/bbs/0079/beginers29107.html
の内容を理解した上で、UpdateCommand の Parameter なども理解する必要があるようですね。

今回の件に関しては DbCommandBuilder を使用して解決することにしました。
;DBに主キーがあってよかった^^;

板汚しになってしまいました…申し訳ありません。
といいつつ、またよろしくお願いします。

ちなみに、この資料ならわかりやすくね?  てのがあれば是非よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加