我有关于编写OleDbCommand的(另一个)问题。我有一个复杂的select命令(包括几个左连接),OleDbCommandBuilder无法为我生成更新命令。
我似乎无法掌握编写更新命令背后的魔力。我知道SQL更新语句的结构,但是我对OleDbDataAdapter的工作原理有点疑惑。我知道当我调用adapter.Update()时它只会更新必要的DataTable行,但我不知道如何编写Update命令以便它能够知道哪个表中的哪个字段需要更新。
如果有人能向我解释这个过程并指出我正确的方向,我真的很感激。
修改:由于没有人回答,我会发布一些有关我的问题的详细信息:
我有一个这种形式的选择语句:
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方法吗?
答案 0 :(得分:1)
你想这样做吗?
update table1 set table1.field1 = table2.field2
from table1 left join table2 on condition1
where condition2 and condition3
我很确定你不能一次更新多个表。因此,您必须为每个表发出一个更新语句。 如果你试图减少到服务器的往返次数,你可以用“;”分隔语句,或者juste调用一个可以进行n次更新的存储过程
仍然可以查看INSTEAD OF triggers,这可能就是您要找的内容