【问题标题】:Access 2007 - INSERT and instant SELECT doesn't retrieve the inserted dataAccess 2007 - INSERT 和即时 SELECT 不检索插入的数据
【发布时间】:2013-06-11 15:33:29
【问题描述】:

我通过 OleDB 在表中插入几行,并立即选择插入的行。

我无法以这种方式检索行,我必须等待大约。 3-5 秒。然后插入的行出现在表格中。

我在数据库本身中观察到了这种行为,我通过 OleDB 插入了行,并在 Access 中观察了打开的表。该行在 3-5 秒后出现在表格中。

Access 是否缓冲行?我是否必须通过 OleDB 发送刷新或提交等?

任何建议都会非常有帮助。

(请不要问我为什么不通过我的业务逻辑或者其他方式来解决这个问题……)

【问题讨论】:

    标签: ms-access ado.net ms-access-2007 oledb


    【解决方案1】:

    我做了一些测试,ACE OleDb 似乎确实有一些缓冲。我发现了

    1. 如果我执行了一些 INSERT,然后立即在同一个 OleDbConnection 上执行 SELECT,则新行立即可用。

    2. 如果我打开两个 OleDbConnection 对象,在 con1 上插入,然后在 con2 上立即选择,新行大约需要 5 秒才能在 con2 连接上可用。

      李>
    3. 如果我打开两个 OleDbConnection 对象,在con1 上插入,在con1.Close() 上进行,然后在con2 上立即选择新行。

    因此,关闭 OleDbConnection 似乎具有“刷新”写入的效果,并使它们更快地可用于其他连接。我的猜测是 OleDb 正在隐式缓冲(或“批处理”)更新,因为 ACE/Jet 是一个共享文件数据库,并且它试图减少对数据库文件的争用。

    (当我使用 SQL Server 进行相同的测试时,我关闭 con1 的情况与我打开它的情况之间没有显着差异。在每种情况下,新记录都是立即可用的。)

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 2013-11-09
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多