Как обновить две таблицы данных обратно в БД, используя 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, поскольку это была последняя команда, установленная для него.