我明明正确关闭了连接,但是还是报错。
后来才知道,如果try ..catch块出了问题的话,就无法正确关闭;
所以需要在catch之后加一个finally
这个是之前报错的错误信息
这个原因是连接过多,但是没有断开连接,导致的!
错误代码如下:
我的代码有很多不足的地方
第一个错误是:没有关闭连接!
主要原因:
当数据库恢复正常时,所有创建的connectionPool都会去连接数据库,从而导致创建大量连接,也可能导致数据库挂掉
我处理的方法是:
把数据库关闭,然后重新打开,连接!
几个小时之后我又修改这个博客,因为我把mysql关闭以后,虽然正常了,但是没过多久又出问题了。
还是这个问题!
这次的处理办法是:
这个我把mysqld.exe进程关闭,然后重启,就好了!
但是,之后还是有问题;
打开mysql的配置文件my.ini或者是my.cnf
把连接数增大;如下
max_connections=500
最根本的办法是在try{
}catch(){
}finally{
在这里关闭连接
}
第二次修改博客的时间是2018/10/20
我之前虽然都关闭连接了,但是3个conn,st,rs写在一个try{}cath(){}finally{关闭三个连接}
总结:
出现这些问题:
不要重启服务器,这个没用的,虽然重启之后正常了,但是没多久又不行,因为是程序问题
一定一定一定一定一定一定一定一定检查程序,关闭连接,关闭连接
多个conn,rs st的一定要分开了,结果集用集合装起来,不要如下:
多个rs放在一起如果出错就会导致其中一个连接无法收回,一直处于阻塞
try{
while(rs.next){
num = rs.getString(1);
// 对每个编号进行最近时间的查询基站
conn1 = JdbcUtils_DBCP.getConnection();
String sqls = "SELECT * FROM yh WHERE number='" + num + "' ORDER BY TIME DESC LIMIT 1";
st1 = conn1.prepareStatement(sqls);
rs1 = st1.executeQuery();
if (rs1.next()) {
times = rs1.getString(8);//这个是时间
// 判断最后一条记录的时间跟当前时间的距离
// 获取当前的时间
Date date = new Date();
.........................................
}
}catch(){
}finally{
关闭连接
}