Как обновить две таблицы данных обратно в БД, используя OleDb и DataAdapter в C#

Я получил две таблицы данных из файла MDB с помощью oledb и изменил его.

accessConnection.Open();   

string selectQuery = "SELECT * FROM Students";
DataAdapter = new OleDbDataAdapter(selectQuery, accessConnection);
DataAdapter.Fill(StudentsDataTable);

DataAdapter.SelectCommand.CommandText = "SELECT * FROM Teachers";
DataAdapter.Fill(TeachersDataTable);

// modified the two datatables
// ...

Однако у меня проблема с обновлением двух таблиц обратно в файл mdb. Я не могу обновить StudentsDataTable, потому что команда выбора DataAdapter уже была изменена для выбора TeachersDataTable. Когда я работаю только с одним DataTable, у меня нет такой проблемы.

DataAdapter.UpdateCommand = new OleDbCommandBuilder(DataAdapter).GetUpdateCommand();
DataAdapter.Update(StudentsDataTable); <-- exception error occur that columns don't match.
DataAdapter.Update(TeachersDataTable);

Есть ли у вас идеи по обновлению двух таблиц данных с помощью одного DataAdapter? или я должен иметь отдельные DataAdapters для двух таблиц?

1 ответ

По сути, вы должны создать два экземпляра.

DataAdapter.UpdateCommand = new OleDbCommandBuilder(DataAdapter).GetUpdateCommand();
DataAdapter.Update(TeachersDataTable);

DataAdapter.SelectCommand.CommandText = "SELECT * FROM Students";
DataAdapter.UpdateCommand = new OleDbCommandBuilder(DataAdapter).GetUpdateCommand();
DataAdapter.Update(StudentsDataTable); 

Основная проблема в том, что ваш DataAdapter настроен на таблицу Teachers, поскольку это была последняя команда, установленная для него.

Другие вопросы по тегам