Ms access Access 2007-插入并即时选择不';t检索插入的数据

Ms access Access 2007-插入并即时选择不';t检索插入的数据,ms-access,ado.net,ms-access-2007,oledb,Ms Access,Ado.net,Ms Access 2007,Oledb,我通过OleDB在表中插入几行,并立即选择插入的行 我无法以这种方式检索行,我必须等待大约3-5秒。然后插入的行显示在表中 我在数据库本身中观察到这种行为,我通过OleDB插入行,并在Access中查看打开的表。该行在3-5秒后出现在表中 是否访问缓冲区行?我是否必须通过OleDB发送刷新或提交等 任何建议都会很有帮助 (请不要问我为什么不通过我的业务逻辑或其他方式解决这个问题……)我做了一些测试,ACE OleDb似乎确实存在一些缓冲。我发现 如果我做了一些插入,然后立即在同一OLEDB连接上

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

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

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

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

任何建议都会很有帮助


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

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

  • 如果我做了一些插入,然后立即在同一OLEDB连接上进行选择,那么新行马上就可以使用了

  • 如果我打开两个OLEDB连接对象,插入到
    con1
    ,然后立即在
    con2
    上选择,则新的行大约需要5秒钟才能在
    con2
    连接上可用

  • 如果我打开插入到
    con1
    上的两个OLEDB连接对象,执行
    con1.Close()
    ,然后立即在
    con2
    上选择,则新行立即可用

  • 因此,关闭OLEDB连接可能会“刷新”写操作,并使其他连接更快地使用它们。我猜OleDb是隐式缓冲(或“批处理”)更新,因为ACE/Jet是一个共享文件数据库,它试图减少数据库文件上的争用

    (当我使用SQL Server进行相同的测试时,我关闭
    con1
    时的情况与我保持打开状态时的情况没有显著差异。在每种情况下,新记录都会立即可用。)