如何在c#中使用OleDb和DataAdapter将两个数据表更新回db

时间:2014-03-03 03:12:29

标签: c# datatable oledb oledbdataadapter updatecommand

我使用oledb从mdb文件中获取了两个数据表并对其进行了修改。

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 select命令已更改为选择TeachersDataTable。当我只处理一个DataTable时,我没有这种问题。

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

您对使用一个DataAdapter更新两个数据表有什么想法吗?或者我应该为这两个表分别使用DataAdapter吗?

1 个答案:

答案 0 :(得分:0)

基本上你必须创建两个实例。

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表,因为它是最后一个命令集。