我在从 DataGridView 更新 Access 表时遇到了一些问题。令我困惑的是,下面的代码适用于一个表而不是另一个表,但它们都具有完全相同的结构。
桌子
我有两个包含多个(相同)字段的表,其中主键是一个名为 "Number" 的字段;此字段是自动增量的,并且在两个表中都没有重复索引。所以我读到缺少主键是并发违规的根源,但这似乎不是这里的问题。
编码
这是我的代码的相关部分,汇总在一起:
初始化
BindingSource BS = new BindingSource();
DbDataAdapter adapter;
DataTable table = new DataTable();
OdbcCommand command = new OdbcCommand(query, odbcConnection);
OdbcDataAdapter adapter = new OdbcDataAdapter(command);
adapter.AcceptChangesDuringUpdate = true; // Attempt to fix the issue
adapter.AcceptChangesDuringFill = true; // same
DbCommandBuilder commandBuilder = new OdbcCommandBuilder(adapter);
dgv.DataSource = BS;
BS.DataSource = table;
adapter.Fill(table);
保存更改
OdbcCommandBuilder builder = new OdbcCommandBuilder((OdbcDataAdapter)adapter);
adapter.UpdateCommand = builder.GetUpdateCommand(); // Fix attempt
adapter.Update(table); // Where the exception is thrown
考虑到我的问题根据使用的数据库随机发生,我认为它与数据库相关,但它们具有相同的结构,并且两者都没有使用(复制到我的本地驱动器上)所以我真的不知道发生了什么。