这个问题让我发疯了。
我正在尝试使用MySQL dataAdapter更新数据集。此方法适用于我的数据库中的其他表,它只是在这个表中发生。以下是代码示例:
String query = "select * from accounts";
DataSet dataSet = new DataSet();
connection.Open();
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(query, (MySqlConnection)connection);
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(dataAdapter);
dataAdapter.FillSchema(dataSet, SchemaType.Source);
commandBuilder.RefreshSchema();
dataAdapter.Fill(dataSet);
dataSet.Tables[0].Rows[0]["balance"] = 1M;
dataAdapter.Update(dataSet);
尝试更新后会抛出异常。请记住,这是我的代码的简化示例,但它得到了相同的结果。
我研究了这个错误,我能找到的是:
1)如果此数据自填充之后已被其他用户更改
2)如果该行不存在。
但是没有可能的方式由另一个用户更改数据,因为这发生在我的开发机器上。该行显然存在,因为它不会在Rows [0]处抛出异常。
正如我所说,这只发生在这一张桌子上。该表有一个int作为主键,我想要更新的列是一个十进制,所以我不知道问题是什么。
感谢您的任何建议。
答案 0 :(得分:0)
我知道这是在不久前发布的,但我刚刚找到了解决问题的方法:
似乎问题出在桌面结构或类似的东西上。我在表上做了一个mysqldump,然后只导入了转储(基本上是从头开始构建表)。在我这样做之后,一切都像魅力一样。
希望我可以帮助别人解决这个奇怪的问题。