1

oledb を使用して mdb ファイルから 2 つのデータテーブルを取得し、それを変更しました。

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
// ...

ただし、2 つのテーブルを更新して mdb ファイルに戻す際に問題があります。DataAdapter 選択コマンドが既に TeachersDataTable を選択するように変更されているため、StudentsDataTable を更新できません。DataTable を 1 つだけ扱う場合、この種の問題は発生しません。

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

1 つの DataAdapter を使用して 2 つのデータテーブルを更新するアイデアはありますか? または、2 つのテーブルに個別の DataAdapter を用意する必要がありますか?

4

1 に答える 1

0

基本的に、2 つのインスタンスを作成する必要があります。

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 に答える