vb.net - 在 vb.net 和 sqlite 中将数据表保存回数据库

标签 vb.net sqlite sql-update

我有一个名为 DTAllCustomers 的数据表,我逐个记录地更新它,但是我现在需要更改数据表几乎所有记录中的一个字段。我想用数据表中的更新信息快速更新数据库。
我试过了:

Dim objCmdBuilder As New SQLiteCommandBuilder(AllCustomersAdapter)
DTAllCustomers.AcceptChanges()
AllCustomersAdapter.UpdateCommand = objCmdBuilder.GetUpdateCommand()
AllCustomersAdapter.Update(DTAllCustomers)

每个命令都被处理,但是底层数据库没有被改变?
我已经搜索了一段时间,但找不到我做错了什么。
任何帮助是极大的赞赏
布拉德

最佳答案

问题是您正在调用 AcceptChanges .一旦您接受了更改,就没有更多的更改,那么 Update 是什么?要救吗?那Update方法已调用 AcceptChanges一旦将这些更改保存到数据库中,就会隐式地进行。您必须调用AcceptChanges 的情况很少见。明确地。以下是一些您可能会操纵接受更改的场景。

  • 当您调用 Fill在数据适配器上,该方法将在内部添加一堆 DataRowsDataTable .在这种情况下,RowState每个将是Added ,就像你自己添加一行一样。但是,这通常不是您在检索数据时想要的,所以 Fill隐式调用 AcceptChanges默认情况下。假设您想从一个数据库中检索数据并将其插入到另一个数据库中。在这种情况下,您确实希望所有行都是 Added .为此,您设置 AcceptChangesDuringFill数据适配器的属性为 False .
  • 你有一个 DataTable包含要保存到两个不同数据库表的更改。在这种情况下,您将需要两个不同的数据适配器。您需要第一个 Updte调用不接受更改,以便第二个数据适配器仍然可以使用它们。在这种情况下,您设置 AcceptChangesDuringUpdate第一个数据适配器的属性为 False调用 Update 后更改仍然存在.您可以允许 AcceptChanges由第二个数据适配器隐式调用,或者您可以设置 AcceptChangesDuringUpdate也可以,然后调用AcceptChanges明确地。
  • 你有两个 DataTables在父/子关系中,并且您希望将两者的更改保存到数据库中。在这种情况下,您需要在父删除之前保存子删除,并在子插入之前保存父插入。为此,您可以调用 GetChangesDataTables以适当的顺序获取要保存的子集。因为你没有通过原始 DataTablesUpdate ,他们的更改不会被隐式接受,因此您需要调用 AcceptChanges明确地在每个 DataTable保存成功后。
  • 关于vb.net - 在 vb.net 和 sqlite 中将数据表保存回数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941885/

    相关文章:

    php - MYSQL IF 语句按类别重新排序

    php - 为什么我的 UPDATE 查询不起作用? MySQL

    vb.Net时间跨度计算

    vb.net - 拆分文本以获得特定值

    javascript - 在同一页面上出现两次的用户控件需要 JavaScript 的唯一 div id

    android:在服务上尝试sqlite数据库时强制关闭

    c# - 返回 IList 与 List 或 IEnumerable 与 List<Class> 之间有什么区别。我想知道返回哪个更好

    python - 如何制作脚本以在我的默认 sqlite3 数据库 django 中插入数据

    sqlite - 从命令行创建空的 sqlite 数据库

    mysql - 如何使用嵌套查询更新行