将DataGridView(DataTable)与DB同步

时间:2009-08-17 13:12:14

标签: c++ database datagridview synchronization datatable

我遇到以下情况:当表单加载并且检索到的数据通过下面的DataGridView填充到DataTable时,数据库中会有一个表格被查询。加载数据后,用户可以自由修改数据(添加/删除行,修改条目)。

表单有2个按钮:ApplyRefresh。第一个将更改发送到数据库,第二个重新读取数据库中的数据并删除用户所做的任何更改。

我的问题是:这是保持DataGridView与数据库同步的最佳方式(从用户的角度来看)吗?

目前这些都是缺点:

  1. 用户必须跟踪他正在做什么,并且每次都必须按下按钮
  2. 如果表单已关闭/ app crash / ...
  3. ,则修改将丢失

    我尝试将更改发送到CellEndEdit事件上的数据库,但用户还需要一些撤消/重做功能,那就是......好吧......不同的故事。

    那么,有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我会说你现在这样做的方式很好。如果您在用户仍在进行编辑时开始尝试更新数据库,则可以运行以更新或修改用户最终可能决定不想更改的内容。此外,这有可能大大增加数据库调用的数量。

强制用户单击“应用”有助于确保仅将用户实际需要的更改发送到数据库。

至于在应用程序崩溃之前丢失更改,我会更加关注应用程序崩溃的原因。

答案 1 :(得分:0)

唯一需要记住的是,您应该在保存数据之前重新获取数据,并且重新获取的数据仍应与您最初向用户显示的数据相匹配。如果没有,其他人进行了更改,您的用户将在不知不觉中被覆盖。您的用户可能不喜欢这样。

如何处理这取决于客户在数据库中的需求。