Как обновить две таблицы данных обратно в базу данных с помощью OleDb и DataAdapter в С#

Я получил две таблицы данных из файла 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. Я не могу обновить StudentDataTable, потому что команда выбора DataAdapter уже была изменена на выбор TeachersDataTable. Когда я работаю только с одним DataTable, у меня нет такой проблемы.

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

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


person user3222603    schedule 03.03.2014    source источник
comment
Как вы создаете StudentDataTable?   -  person Mihai Hantea    schedule 03.03.2014
comment
Какие изменения вы сделали в таблице учеников?   -  person Shell    schedule 03.03.2014


Ответы (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 настроен на таблицу учителей, поскольку это была последняя команда, установленная для него.

person Riz    schedule 03.03.2014