【问题标题】:Do I Need to Call .AcceptChanges() before .Update() After a delete Operation在删除操作之后,我是否需要在 .Update() 之前调用 .AcceptChanges()
【发布时间】:2013-04-29 05:33:33
【问题描述】:

您好,我正在使用 MS Access 数据库制作一个小型数据库应用程序。我从文本框中添加到数据库并使用组合框从数据库中删除并在 datagridview 中显示数据库添加似乎工作正常,除了自动增量在重新启动之前未显示并且我无法删除,因为当我在删除后调用更新时它给了我一个 DBConcurrencyException我尝试在更新之前添加acceptchanges,这没有给出任何错误,但更改没有保存到数据库中。

这是我的两个问题

  • 如何在不重新启动应用程序的情况下进行自动增量显示。(这不是那么重要,我可以隐藏 ID 列)

  • 最重要的是如何使删除工作。

另外我使用 OleDbCommandBuilder 更新方法

【问题讨论】:

  • .AcceptChanges() 告诉数据集/数据表没有更多更改要持久保存到数据库中。所以: .AcceptChanges() 之后的 .Update() 对数据库没有影响。

标签: c# .net ms-access ado.net


【解决方案1】:

您有 2 个查询

AutoIncrements:请参阅 here,其中指出您应该执行选择查询以将 db 自动生成的值填充回数据集表中。

关于删除,只需删除数据表中的行,其行状态将被标记为Deleted。当您使用适配器将其更新到数据库时,它将找到要删除的行并相应地在数据库中执行删除。当你调用acceptchanges()时,它会标记所有行都处于original状态并且不会导致数据库更新。

编辑

当 CRUD 操作无效时,会发生 DBConcurrency 异常。更多详情请参考here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2018-12-18
    • 2011-05-03
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多