你在close之前要判断一下 con != null
解决方案 »
- 数据流的发送问题
- 关于 string lenth SQL 代码单元 的问题
- 谁有java api文档 txt或doc版的
- javaBean运行环境
- 一个高中学历无产者是怎样变成月薪4800元的程序员的
- Socket编程中关于二进制数据流的问题
- 怎样把数组变为List类啊
- 求一代码(在面板上实现播放声音和显示gif动画)
- 我在JPanel上画了一个图,我怎么才能实现缩放功能即,我用放大,缩小的Button控制)???? 在线等待...
- 新手
- try catch finally
- 没有.h文件的情况下用java调用dll,而且这个dll是别人用jni做的,有可以调用这个dll的java类,但是该类没有package
我在使用Weblogic的Oracle的连接池的时候,记得Oracle的实现上有这样一个设置,即给一个测试语句来测试数据库连接。一般都用 select 1 from dual 。 另外还有一个设置就是多长时间检测一次。一般设置15分钟。
也就是说Oracle的实现的方法,会自动定期用这个语句去检测数据库的连接。一旦检测到连接失败,就关闭连接并重新建立连接。
因此我建议楼主可以考虑这样的机制。毕竟网络连接是完全有可能断开的。我碰到的实际例子如下:
Web服务器与数据库之间有一个安全防火墙,这个防火墙会定期检查连接,如果某个连接长时间(30分钟)没有数据流过,就会被关闭。这种关闭使得检测连接还是打开的,却不能执行sql语句。但是如果连接一直有数据流动,就不会被关闭。
设置定期检测后,比较好解决了这个问题。我估计楼主可能也有类似情况。为什么你的连接第二天被关闭了,是不是晚上的数据流动没有了。早上就关闭了。
但是连接池的作用,是为了减轻系统由于频繁的获取和释放连接所豪的资源的。那在getConnection()中加了测试语句,就是每次从连接池中取连接都要先执行一下sql语句,那么这样岂不是又增加了数据库的负担?看来是一对矛盾了。郁闷ing