SqlConnection就一定要关闭吗?

http://www.cnblogs.com/jjstar/archive/2004/06/10/14697.aspx

按照ms的说法,数据库连接属于非托管资源,在.net下使用后一定要close,这样才能避免资源泄露。其实我并不这么认为,我觉得只要控制住数据库的连接数量就可以了。那么如何控制连接数量呢?控制连接数量实际上就是控制使用数据库的组件的实例化的数量。这好办,用COM+的对象池就可以了。
具体的实践如下:

1、建立一个从ServicedComponent继承的类
2、声明使用对象池
3、在该类的构造函数中打开对数据库的连接,并声明不使用ado.net提供的连接池。应该在该函数中尽量把所有初始化工作做完,这样可以更好地利用对象池
4、如果该类的方法不会被client频繁调用,那么应该声明JITA
5、写数据库访问相关方法,对数据库操作后,不关闭SqlConnection
6、重写CanBePooled方法,如果SqlConnection是open的状态,那么就声明可以被pooled
7、写client调用方法,对刚才写好的类的数据库访问方法进行调用,调用后一定要dispose该类,以便通知对象池回收

经测试证明,在大访问量的情况下,速度要比关闭数据库连接的ServicedComponent快,但是付出的代价是数据库增加了约连接池同等数量的线程,并且可连接数量减少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值