为什么当我更改 DataGridView 中的值时我的数据库 Table 没有更新?
Why my Database Table is not updated when I change Values in DataGridView?
我在表单上放置了一个名为 DataGridView2
的 DataGridView。
我将 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
方法根据需要执行 InsertCommand
、UpdateCommand
和 DeleteCommand
以保存更改到数据库。
Update
方法将隐式调用 AcceptChanges
以指示更改已保存。您很少需要显式调用 AcceptChanges
。
我在表单上放置了一个名为 DataGridView2
的 DataGridView。
我将 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
方法根据需要执行 InsertCommand
、UpdateCommand
和 DeleteCommand
以保存更改到数据库。
Update
方法将隐式调用 AcceptChanges
以指示更改已保存。您很少需要显式调用 AcceptChanges
。