3

我正在制作一个石英线程应用程序,该应用程序从表中收集数据并在插入后将其插入另一个表中正在更新数据库,
但是当我收到上述错误时,我在表中插入了两次数据

请注意:
1.我使用 Oracle DB
2. **OJDBC6.jar连接**
3.所有表都在相同的架构中

堆栈跟踪:

java.sql.SQLException: Connection is closed. 
        at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.checkOpen(PoolingDriver.java:263) 
        at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.close(PoolingDriver.java:268) 
        at com.sender.gsm.dao.Dao.closeConnection(Dao.java:38) 
        at com.sender.gsm.dao.OutDataDao.insertData(OutDataDao.java:91) 
        at com.sender.gsm.jobs.DataHandler.execute(DataHandler.java:49) 
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213) 
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

关闭连接函数是

public void closeConnection(Connection conn) throws SQLException {
        if (conn != null ) {
            conn.close();
        }
    }
4

1 回答 1

6

在 com.sender.gsm.dao.Dao.closeConnection(Dao.java:38) 在 com.sender.gsm.dao.OutDataDao.insertData(OutDataDao.java:91)

从堆栈跟踪中,您正在关闭连接,同时在选择后执行插入。尝试创建新连接。

您可能closeConnection()在 select 语句之后调用了 for 方法。因此,当它尝试执行连接关闭的查询时,会在运行时引发异常。

如果您正在使用连接池,请确保已将maxIdlemaxActive参数配置为合理的值

于 2014-08-06T12:24:52.090 回答