java.sql.SQLException: Already closed._JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java.sql.SQLException: Already closed.

java.sql.SQLException: Already closed.

 2015/3/20 12:52:40  静默时间-花开灿然  程序员俱乐部  我要评论(0)
  • 摘要:问题:SEVERE:Erroroccuredwhileattemptingtoquerydatajava.sql.SQLException:Alreadyclosed.atorg.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)atorg.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close
  • 标签:Java SQL

问题:

SEVERE: Error occured while attempting to query data
java.sql.SQLException: Already closed.
at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)
at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191)
at org.apache.commons.dbutils.DbUtils.close(DbUtils.java:50)
at org.apache.commons.dbutils.AbstractQueryRunner.close(AbstractQueryRunner.java:409)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:358)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:306)
at com.cmcc.imark.dao.BaseDao.find(BaseDao.java:130)

可能原因:

1.数据库连接时间较长,自动关闭,当再次查询数据时报错。

2.检查sql语句是否正确,数据库连接是否正常关闭。

解决方法

在数据源配置文件中新增以下属性:

<property name="testOnBorrow">
<value>true</value>
</property>
<property name="validationQuery">
<value>SELECT 1 FROM DUAL</value>
</property>

?其中,

testOnBorrow true :指明是否在从池中取出连接前进行检验。如果检验失败,则从池中去除连接并尝试取出另一个。

validationQuery?: SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前,如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录。另外,?dual表是oracle里的,mysql可以直接写select 1。

?

上一篇: JAVA生成二维码 下一篇: 没有下一篇了!
发表评论
用户名: 匿名