我的 WPF 项目中有以下代码:
string query2 = "SELECT * FROM Anamnese_VMBO";
string connectionstring = <Removed string for privacy >
IDbConnection con1 = new OleDbConnection(connectionstring);
con1.Open();
OleDbCommand dbCommand = new OleDbCommand(query2, (OleDbConnection)con1);
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(dbCommand);
OleDbCommandBuilder cb = new OleDbCommandBuilder(dataAdapter);
cb.GetDeleteCommand(true);
cb.GetInsertCommand(true);
cb.GetUpdateCommand(true);
dataAdapter.Fill(this.dt1);
dt1.Merge(dt);
dt1.GetChanges();
dataAdapter.Update(dt1);
dt1.AcceptChanges();
Grid.ItemsSource = dt1.DefaultView;
con1.Close();
正如您在代码中看到的,我将 2 个数据表合并在一起,然后执行更新命令生成器。当我运行代码时,我可以看到我的 2 个数据表具有我需要的确切值,但是当我检查我的数据库时,没有任何更新。
我测试的一些东西:
- 当我尝试插入静态数据时,常规命令文本有效。我运行了一个测试,我手动给 OleDBCommand 一个插入语句,它工作。
- 列名没有特殊字符或以任何方式无效。
- 我数据库中的所有表都有主键。
- 我合并的表具有完全相同的列名。
- 我必须使用命令生成器,因为要手动编写的列太多。