1

我使用 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 文件时遇到了问题。我无法更新 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 更新两个数据表有什么想法吗?或者我应该为这两个表设置单独的 DataAdapters 吗?

4

1 回答 1

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 表,因为它是在其上设置的最后一个命令。

于 2014-03-03T03:27:55.233 回答