为什么当我更改 DataGridView 中的值时我的数据库 Table 没有更新?

Why my Database Table is not updated when I change Values in DataGridView?

我在表单上放置了一个名为 DataGridView2DataGridView。 我将 dataSource 属性 分配给 DataSet 中的 table,称为 "Account"。 我为 dataGridView 设置了默认设置,允许用户修改它。我放了一个 Save 按钮供用户将更改的值从网格保存到数据库。然而它不起作用。

我在保存按钮中使用的代码是:

Me.Validate()
Me.DataGridView2.Update()
Me.MyDBTableDataset.AcceptChanges()

当我在第二行调试它时,其中有正确的值:

DataGridView2.Rows(0).Cells(2).Value 

这是用户在网格中修改的值。但是当它执行 AcceptChanges 并完成时,没有任何更改应用到我的数据库。

如果有人能提供帮助,那就太好了。 谢谢

AcceptChanges 并不像您认为的那样。它不保存任何东西。它实际上重置了 DataSet 以便它不包含要保存的更改。您还可以摆脱对网格 Update 方法的调用,因为它是无用的。它所做的只是在屏幕上重新绘制网格。

您实际需要做的是在最初调用 Fill 的同一个数据适配器或 table 适配器上调用 Update 以首先检索数据。 Fill 方法执行 SelectCommand 检索数据, Update 方法根据需要执行 InsertCommandUpdateCommandDeleteCommand 以保存更改到数据库。

Update 方法将隐式调用 AcceptChanges 以指示更改已保存。您很少需要显式调用 AcceptChanges