关闭或不关闭数据库中的连接

Gal*_*ali 9 c# windows-mobile windows-ce sql-server-ce

Windows-Mobile and Windows-CE使用SqlCE和我不知道做什么更好.

要在程序打开时打开连接,运行任何查询...更新...删除数据库并在程序关闭后关闭连接?

或者打开连接运行任何查询的..更新...删除数据库并立即关闭连接?

cta*_*cke 14

尼斯.答案到处都是.以下是我从经验和与SQL Compact团队交互中所了解的内容:

  1. 关闭连接会刷新您所做的更改,否则引擎会在执行此操作之前等待刷新周期.当您完成使用它以确保您的更改实际进入商店时,最好关闭连接.写入之后和刷新之前的功率损耗将丢失数据.
  2. 没有官方连接池,但打开第一个连接是昂贵的(即慢),其他所有连接都很快.我从团队得到的建议是在应用程序启动时实际创建一个连接并保持打开状态.您实际上并不需要使用它,但保持打开会保持大量连接信息的缓存,以便后续连接到同一个商店的速度很快.

所以答案实际上是两者兼而有之.

编辑

对于那些感兴趣的人,可以在OpenNETCF ORM库中看到这个工作原理的一个很好的例子.默认情况下,库会创建一个"维护"连接,该连接保持打开状态,用于执行模式查询等操作.所有其他数据操作都使用自己的连接.您还必须选择将库配置为在Store的生命周期中重用单个连接,或者在每次触摸商店时使用新连接.在我使用默认值的所有项目中,性能和行为一直是最好的(这就是为什么我把它作为默认值).