0

OleDbCommand の記述について (別の) 質問があります。複雑な選択コマンド (いくつかの左結合を含む) があり、OleDbCommandBuilder は更新コマンドを生成できません。

更新コマンドを書く背後にある魔法を理解できないようです。SQL update ステートメントの構造は知っていますが、これが OleDbDataAdapter でどのように機能するかについては少し戸惑っています。adapter.Update() を呼び出すと、DataTable の必要な行のみが更新されることはわかっていますが、Update コマンドの書き方がわからないため、どのテーブルのどのフィールドを更新する必要があるかを知ることができます。

誰かが私にプロセスを説明し、正しい方向に私を向けることができれば、本当に感謝しています.

編集:誰も答えていないので、私の質問に関する詳細を投稿します:

次の形式の select ステートメントがあります。

select field1, field2, fieldn from table1 left join table2 on condition left join table3 on condition where condition1 and condition2

困惑しているのは、次のように書くことができないので、どのように更新ステートメントを書くべきかということです:

update table1, table2 set field1 = newvalue where condition1 and condition2

updateステートメントは1つのテーブル引数しか受け入れないため、これを行う方法がわかりません。この種の DataTables で OleDbDataAdapter.Update メソッドを呼び出すことさえ可能ですか?

4

1 に答える 1

1

これをやろうとしていますか?

update table1 set table1.field1 = table2.field2
from table1 left join table2 on condition1
where condition2 and condition3

一度に複数のテーブルを更新できないことは確かです。したがって、テーブルごとに 1 つの更新ステートメントを発行する必要があります。サーバーへの往復回数を減らそうとする場合は、ステートメントを「;」で区切るか、n 回の更新を行うストアド プロシージャを呼び出します。

まだINSTEAD OF triggersをチェックしてください。おそらくあなたが探しているものです

于 2009-03-09T12:47:23.127 に答える