我正在通过OleDB在一个表中插入几行,并立即选择插入的行。
我不能以这种方式检索行,我必须等待大约。3-5秒。然后,插入的行将出现在表格中。
我在数据库本身中观察到了这种行为,我通过OleDB插入了行,并观察了Access中打开的表。该行在3-5秒后出现在表中。
访问缓冲区行吗?我是否必须通过OleDB发送刷新或提交等?
任何建议都会非常有帮助。
(请不要问我为什么不通过我的业务逻辑或其他方式来解决这个问题……)
发布于 2013-06-12 18:47:08
我做了一些测试,OleDb似乎确实有一些缓冲。我发现
con1
,然后立即SELECTed on con2
,新行大约需要5秒钟才能在con2
连接上可用。con1.Close()
,然后立即在<代码>D11上SELECTed,新行立即可用。因此,关闭OleDbConnection似乎具有“刷新”写入的效果,并使它们更快地可用于其他连接。我的猜测是,OleDb隐式缓冲(或“批处理”)更新,因为ACE是一个共享文件数据库,它试图减少对数据库文件的争用。
(当我使用SQL Server执行相同的测试时,关闭con1
时的用例与保持打开时的用例没有显着差异。在每种情况下,新记录都是即时可用的。)
https://stackoverflow.com/questions/17048114
复制相似问题