这次简单的写了一个jsp页面
定时刷新
检测网管告警是否及时到达
因为当时偷懒,没有考虑无告警情况,出现了bug
后来回想到有这个缺陷,觉得应该在sql出来的时候发现为null的
结果很奇怪啊 当出现null情况是,time和tmp结果出现的是上一次rs的内容
在每次循环的时候,我已经重置了sql,这个rs也应该同步更新
后来上网查了一下,说statement要用一次关一次
我这么操作还是没用
后来在每次循环初,先把time和tmp=null这样就正常了
其实问题也不大
就是不明白为什么关闭statement了,rs里面还是就结果,不是也应该自动关闭,释放资源的么
SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int mapsize = HMalarm.size();
Object key,value;
java.util.Date timenow = new java.util.Date();//当前时间
int timedis = 0;//时间差
Iterator keyValuePairs1 = HMalarm.entrySet().iterator();
for (int i = 0; i < mapsize; i++) {
java.util.Date time = null;//告警时间
String tmp = " ";
Map.Entry entry = (Map.Entry) keyValuePairs1.next();
key = entry.getKey();
value = entry.getValue();
try{
stmt = null;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
sql = "select mediation_time,source_id from tacfm..T_ALARM_STATE where source_id = '"+key.toString()+"' order by mediation_time desc ";
rs = null;
rs = stmt.executeQuery(sql);
//这里就不用循环了,反正取得是max
while(rs.next()){
time = rs.getTimestamp(1);
tmp = rs.getString(2);
//rs.afterLast();
break;
}
//这里释放资源
rs.close();
stmt.close();