gpt4 book ai didi

ms-access - 为什么我的 Access 数据库在我从另一个进程中读取时不是最新的?

转载 作者:行者123 更新时间:2023-12-04 17:42:29 26 4
gpt4 key购买 nike

在我的应用程序中,我做了以下事情:

  • 使用 Jet/ADO 和 VB6 打开 Access 数据库 (.mdb)
  • 清除并用新数据重新填充表格
  • 关闭数据库
  • 启动另一个处理新数据的进程。

  • 问题是有时第二个进程找不到新数据。有时表是空的,有时 RecordCount > 0,但 EOF 是真的,我不能执行 MoveFirst 或 MoveNext。简而言之:各种奇怪的东西。

    我目前的解决方法是在关闭数据库和启动第二个进程之间添加延迟。
  • 这里发生了什么?
  • 我可以做些什么吗? (除了使用不同的数据库)
  • 最佳答案

    只是一个猜测,但我可能是因为 Jet 引擎具有读取缓存和延迟写入功能:

    How To Implement Multiuser Custom Counters in Jet 4.0 and ADO 2.1

    “Microsoft Jet 有一个读取缓存,每 PageTimeout 毫秒更新一次(默认为 5000 毫秒 = 5 秒)。它还具有延迟写入机制,该机制在单独的线程上运行到主处理,从而将更改异步写入磁盘。这两个机制有助于提高性能,但在某些需要高并发的情况下,它们可能会产生问题。”

    该文章建议使用 Jet 的 RefreshCache 方法并将 Jet OLEDB:Transaction Commit Mode 设置为 1 毫秒(ADO 优于 DAO for Jet 的一个优点是您可以更改此设置而无需更改注册表中的值)。

    附言您应该考虑编辑 Access 数据库 (.mdb) 以提及“Jet”并使用“Jet”标签,否则您会收到某个 SO 用户的评论,该用户对这些事情很挑剔:)

    关于ms-access - 为什么我的 Access 数据库在我从另一个进程中读取时不是最新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486970/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com