0

我有(另一个)关于编写 OleDbCommand 的问题。我有一个复杂的选择命令(包括几个左连接)并且 OleDbCommandBuilder 无法为我生成更新命令。

我似乎无法掌握编写更新命令背后的魔力。我知道 SQL 更新语句的结构,但是我对它如何与 OleDbDataAdapter 一起工作感到有点困惑。我知道当我调用 adapter.Update() 时,它只会更新 DataTable 的必要行,但是我不知道如何编写更新命令,因此它能够知道中的哪些字段需要更新。

如果有人能向我解释这个过程并为我指明正确的方向,我将不胜感激。

编辑:由于没有人回答,我将发布有关我的问题的更多详细信息:

我有一个这种形式的选择语句:

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 语句只接受一个表参数。甚至可以在这种 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

我很确定您一次不能更新多个表。因此,您必须为每个表发出一个更新语句。如果你想减少到服务器的往返次数,你可以用“;”分隔语句,或者调用一个存储过程来执行 n 次更新

仍然检查INSTEAD OF 触发器,这可能是您正在寻找的

于 2009-03-09T12:47:23.127 回答