问题描述
程序需求:程序每5分钟,要更新一次数据库里表的数据,每一次要执行38条SQL语句,每一条SQL语句要更新大约16000多个字段,在运行当中出现了这样一个问题,大约运行10个多小时以后,程序就卡死了,程序什么异常都没抛出,控制台也没有异常抛出,诚心请教高手,在这方面有没有更好的解决方案。try{Longstart=System.currentTimeMillis();conn.setAutoCommit(false);stmt=conn.createStatement();//listSql是保存SQL的集合for(i=0;i<listSql.size();i++){System.out.println(listSql.get(i));//stmt.executeUpdate(sql.get(i).toString());stmt.addBatch((String)listSql.get(i));}int[]intNumber=stmt.executeBatch();stmt.clearBatch();conn.commit();conn.setAutoCommit(true);Longend=System.currentTimeMillis();System.out.println("批量执行"+(end-start)+"毫秒");System.out.println("保存成功");
解决方案
解决方案二:
看看连接有没有关闭
解决方案三:
...
解决方案四:
listSql用完有没有clear()清空。Statement用完最好关闭。程序卡死可能是其他代码的原因。
解决方案五:
所有的关闭,我都从控制台打印出过,都被清空了。listSql也被清空在控制台被卡只是执行一条SQL的时候被卡死了
时间: 2024-09-30 21:13:11