首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理oledbconnection的最佳方式

处理oledbconnection的最佳方式
EN

Stack Overflow用户
提问于 2012-01-23 01:54:52
回答 2查看 1.5K关注 0票数 0

通过搜索堆栈溢出和其他站点,我了解到单例是一种糟糕的编程实践。我在很大程度上依赖于OleDbConnection来连接到SqlServer,我有一些页面可以像20+一样实例化一个连接。我想用一个单例来代替它,以避免在已经打开一个连接时打开连接。

我的问题是:在我的情况下,Singleton是不是很糟糕?在sql server 2008上实现多个连接的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 02:18:07

你所描述的与Singleton无关...单例本身既不好也不好--只有当使用错误的原因时,它才是坏的(就像所有的东西一样)。

至于你的连接问题:

这种情况通常是通过连接池解决/处理的。

你可以自己实现(不推荐)……根据您使用的ADO.NET提供商,它可能已经提供了一个实现良好且经过良好测试的连接池(例如,来自Devart的连接池-没有附属关系,只是一个快乐的客户)……

连接池为DB连接提供了一种缓存...当你需要一个时,你从池子里得到它,当你完成后,你把它还给池子…池将连接保持在周围(自上次使用或类似的可配置时间段)...由于池中的连接已经创建并打开,因此您可以获得显著的速度优势……

OTOH如果你使用的连接使用不同的登录和/或连接设置,那么你不能真正从连接池中获利……

更新:

OleDB提供了一个内置的连接池机制--详情请参阅MSDN。根据MSDN的说法,它是默认启用的...关闭/释放连接时,它将自动返回到池中...这反过来意味着对于您的情况,您可能已经在使用池机制(假设您正在使用OleDB的默认设置)。

票数 1
EN

Stack Overflow用户

发布于 2012-01-23 02:09:48

单例不是正确的选择,因为它是一个推荐的做法,以关闭连接,当你做完你的数据库transaction.Even如果你需要频繁的数据库连接,你应该在你需要的时候打开连接,并尽快关闭它。

除此之外,Singleton完全不是一个糟糕的编程实践。Singleton是编程中广泛使用的模式。没有模式是糟糕的编程实践。只是你应该在一种场景中使用它们,在这种场景中,它们可以很好地适应和理解。如果您将在不适当的场景中使用模式,这将是一个糟糕的编程实践。

编辑

为了清楚起见,在我看来,经验法则应该是您不应该为将来的操作保持连接开放。如果有一些挂起的事务,显然最好使用相同的连接来执行所有事务。但是,对于将来可能需要执行的操作,您不应该保持连接打开

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8963219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档