java.sql.SQLException: Connection is closed

4
我正在制作一个石英线程应用程序,从一个表中收集数据并将其插入到另一个表中,在插入后更新数据库。但是当我遇到上述错误时,我发现有些数据在表中被重复插入了。
请注意: 1. 我使用的是Oracle DB。 2. 使用OJDBC6.jar进行连接。 3. 所有表都在同一个模式中。
StackTrace:
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)

“close connection”函数的作用是关闭连接。

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

连接已经在其他地方关闭了! - Maheswaran Ravisankar
1个回答

8

在com.sender.gsm.dao.Dao.closeConnection(Dao.java:38)处,你关闭了连接,在执行查询后进行插入。尝试创建新的连接。

从堆栈跟踪中可以看出,你在选择语句后调用了closeConnection()方法。因此,当尝试执行查询时,连接已关闭,导致运行时抛出异常。

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


非常感谢,你救了我的一天 :) - Dunken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接