2009-03-09 2 views
0

У меня есть (другой) вопрос о написании OleDbCommand's. У меня есть сложная команда выбора (включая несколько левых объединений), и OleDbCommandBuilder не может генерировать команды обновления для меня.Пользовательские письма Команды OleDbCommand

Я не могу понять магию за написанием команд обновления. Я знаю структуру инструкции SQL update, однако я немного озадачен тем, как это работает с OleDbDataAdapter. Я знаю, что когда я вызываю адаптер.Update(), он обновляет только нужные строки DataTable, однако я не знаю, как написать команду Update, чтобы он смог узнать, какое поле в , какая таблица нуждается в обновлении.

Я был бы очень признателен, если бы кто-то мог объяснить мне этот процесс и указать мне в правильном направлении.

Edit: Поскольку никто не отвечает, я буду публиковать некоторые подробности относительно моего вопроса:

У меня есть отборное заявление в такой форме:

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 

Так что я не понимаю, как это сделать, поскольку оператор обновления принимает только один аргумент таблицы. Можно ли даже вызвать метод OleDbDataAdapter.Update для такого типа DataTables?

ответ

1

Вы пытаетесь это сделать?

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

Я уверен, что вы не можете обновлять более одной таблицы за раз. Поэтому вам нужно будет выпустить один оператор обновления для каждой из таблиц. Если вы пытаетесь сократить число туда и обратно на сервер, вы можете отделить заявления с «;», или Juste вызова хранимой процедуры, сделать бы русские обновления

Тем не менее проверить INSTEAD OF triggers, что может быть, что вы ищете

+0

Ну, это определенно полезно, однако все еще есть проблема. DataRow содержит столбцы из разных таблиц, и любой из них может быть изменен - ​​и мне до сих пор неясно, как я мог написать команду обновления, которая могла бы изменить любое из этих полей. –

+0

Я уверен, что вам нужно выпустить инструкцию для обновления для каждой из таблиц, затем ... –

+0

Проверьте триггеры INSTEAD OF, возможно, что вы ищете –

Смежные вопросы