Пользовательское написание команд OleDbCommand - PullRequest
0 голосов
/ 09 марта 2009

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

Я не могу понять магию написания команд обновления. Я знаю структуру оператора обновления SQL, однако я немного озадачен тем, как это работает с OleDbDataAdapter. Я знаю, что когда я вызываю adaptor.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

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

1 Ответ

1 голос
/ 09 марта 2009

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

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

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

Все еще проверьте INSTEAD OF триггеров , это, возможно, то, что вы ищете

...