Access 2007 - INSERT和即时SELECT不检索插入的数据

时间:2013-06-11 15:33:30

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

我做了一些测试,似乎ACE OleDb似乎有一些缓冲。我找到了

  1. 如果我做了一些INSERT,然后立即在同一个OleDbConnection上做了一个SELECT,那么新行就可以立即使用。

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

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

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

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