■9038 / ) |
Re[3]: リストボックスの全アイテムをテーブルと差分を取り更新 |
□投稿者/ 魔界の仮面弁士 (474回)-(2007/10/17(Wed) 09:23:42)
|
■No9034 (みこ さん) に返信 > ですので1件ごとに処理をしなければならないのでは?と思ったのですが、そうではないのでしょうか?
いえ。それらの処理は、Adapter 側で自動的に処理させることができます。
DataSet(というよりも、その中のDataTable)に登録された行(DataRow)は、 それぞれ、RowState という「状態」を持っています。
その状態が Unchanged なら「変更なし」、Modified で「修正あり」、Added は「追加」、Deleted が「削除」です。 それぞれについて、編集前の値を得る事も、編集後の値を得ることもできます。(DataRowVersion)
そして DataAdapter/TableAdapter の Update では、各行の RowState を基に、自動的に INSERT / UPDATE / DELETE の SQL コマンドを発行してくれます。
この SQL とは、Adapter 側の InsertCommand / UpdateCommand / DeleteCommand プロパティです。 これらのコマンド設定次第で、悲観的更新も楽観的更新も可能となっています。 # 悲観的…編集対象の行が、既に他のユーザによって編集済みの場合、更新失敗として扱う。 # 楽観的…他のユーザによる編集結果を無視して、後書き優先として扱う。
[行の状態とバージョン] http://msdn2.microsoft.com/ja-jp/library/ww3k31w0%28VS.80%29.aspx
[コマンドの自動生成] - [更新および削除のオプティミスティック同時実行制御] http://msdn2.microsoft.com/ja-jp/library/tf579hcz%28VS.80%29.aspx
|
|