我正在制作一个石英线程应用程序,它从表中收集数据并在插入后将其插入另一个表中更新数据库
但是当我得到上述错误时,我在表格中插入了两次数据
请注意:
1. 我使用Oracle DB
2. ** OJDBC6.jar 连接**
3.all表在同一模式中
堆栈跟踪:
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();
}
}
答案 0 :(得分:4)
at com.sender.gsm.dao.Dao.closeConnection(Dao.java:38) 在com.sender.gsm.dao.OutDataDao.insertData(OutDataDao.java:91)
从堆栈跟踪中,您在选择后执行插入时关闭连接。尝试创建新连接。
您可能在select语句之后调用了closeConnection()
方法。因此,当它尝试执行查询时连接已关闭时,会在运行时抛出异常。
如果您使用连接池,请确保已将maxIdle
和maxActive
参数配置为合理的值