2 zhaohechao zhaohechao 于 2016.02.29 16:53 提问

C# 如何释放连接池的连接

我们知道.net的数据库连接默认是使用连接池的,这样做有很多好处。但是对于CS结构的应用程序,会消耗很多数据库连接。因此我在oracle数据库端设置了,IDL TIME 空闲时间,即超过一定时间没有操作就关闭连接,但是.net客户端却不能释放连接,所以当Oracle端释放连接后,客户端再执行sql就会报异常。如何做才能释放连接池中的连接呢?

2个回答

caozhy
caozhy   Ds   Rxr 2016.02.29 16:55

只能说你的oracle的数据库的驱动有问题,或者有别的问题。.net的连接池当然也是自动管理,不需要释放的。只要调用connection.close()或者dispose()就可以了。

DuckchanX
DuckchanX 明明只有半桶水,这么有自信,真是难得
10 个月之前 回复
zhaohechao
zhaohechao   2016.03.01 08:16

谢谢你的回答。但是问题就出现在这个自动管理上,当我们调用connection 的Close时,连接并没有真正的释放,而是由.net回收到了回收池。当再new一个connection时,只是取出原来的连接,但是当oracle主动关闭连接,或者网络中断,连接池中连接并不能主动释放,而是抛出异常。我想做的是,当连接池中的连接空闲一定时间后,主动释放,我不了解.net连接池的释放机制,当然我还了解到Connection有一个静态方法ClearAllPools可以清理连接池,不过这样要做大量的工作。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!