用Jet/ADO立即关闭连接真的很明智吗?

Dan*_*ski 1 vb6 connection ms-access ado jet

我对这个话题进行了广泛的研究,并与我的同事进行了深入的讨论.

普遍的共识似乎是,数据库连接应该在需要时打开并立即关闭.连接的任何缓存/池应该由数据库驱动程序或其他层完成,而不是由应用程序本身完成.

但是我对Jet/ADO有疑虑.Jet和/或ADO使用读取缓存和延迟写入,这可能导致"不同步"连接.当然,我每次使用JRO时都可以重新同步连接,但这似乎很麻烦,可能性能耗尽.

我应该采用关闭每个连接并重新同步每个新连接的"最佳实践",还是应该使用全局连接对象,因为Jet/ADO怪癖?

Dav*_*ton 5

Jet/ACE的一个问题是锁定文件(*.ldb)的创建会给性能带来很大的损失.此外,如果LDB已存在(因为已连接另一个用户),则设置锁定可能需要很长时间.

因此,您希望最小化应用程序连接的次数,因为您可能会浪费时间不断重新创建并重新连接到LDB文件.

在Access应用程序中,许多程序员通常会保持持久连接.

通常的建议是以隐藏的形式打开表格或打开表格上的记录集.我更喜欢初始化指向后端的数据库变量.托尼在引用文章中的反对意见对我来说似乎微不足道 - 解析连接字符串并不困难,例如Mid(CurrentDB.TableDefs("MyLinkedTable").Connect,11).

在非Access上下文中,您遇到同样的问题,因为这是Jet/ACE数据库引擎问题.当然,维护开放连接的特定方法会有所不同,但关键是保持开放状态意味着db引擎对锁定文件的争用较少.