2012-06-28 98 views
5

我一直在努力与OleDbConnection现在试图让它不缓存。基本上我正在访问一个共享的Access数据库,这个数据库正从另一个应用程序写入,然后我正在读取数据(通过最后一次写入时间和后续1秒的延迟检查它是否被刷新)。禁用/刷新OleDbConnection缓存

不幸的是,这是完全不可靠的。

我一直在读(并要疯了)如何禁用连接池,和我随后,每一个可能的更新之后,在重新连接之前执行以下步骤:

_connection.Close(); 
_connection.Dispose(); 
_connection = null; 
OleDbConnection.ReleaseObjectPool(); 
GC.Collect(); 

除此之外,连接字符串会禁用连接池OLE DB Services = -2。最后,我还在Jet 4.0的注册表中将PageTimeout更改为“10”。

所有这些措施都不幸没有效果。现在唯一能想到的就是this Microsoft KB Article中提到的,并致电JRO.JetEngine.RefreshCache。唯一的问题是它的参数是ADODB.Connection。我宁愿不重写我的整个数据库层,以及我的软件正在读取记录的位置,以便使用遗留的COM对象来实现此功能,但似乎它可能是唯一的方法。

我的问题是,虽然目前正在进行重写使用ADODB(甚至不是ADO.NET!)的任务,但可以禁用缓存OleDbConnection

回答