跪求答案。。
for(Item it:list){
sqll="select dbh from dbxx where yhh='"+it.getYhh()+"'";
try {
pstmm=cm2.prepareStatement(sqll);
ResultSet rs=pstmm.executeQuery();
while(rs.next()) {
Biaohao bh=new Biaohao();
bh.setDbh(rs.getString("dbh"));
list0.add(bh);
}
if( list0.size()>1){
//for(int i=0;i<list0.size();i++){
// String sql0="select z_dl from dbxx where dbh='"+list0.get(i)+"'and yhh='"+it.getYhh()+"'";
//PreparedStatement pstm0=cm2.prepareStatement(sql0);
//ResultSet rs0=pstm0.executeQuery();
//while(rs0.next()){
// DianL dl=new DianL();
//dl.setZ_dl(rs0.getFloat("z_dl"));
//list1.add(dl);
//}
//
//}
System.out.print("for is over");
sql1="select device_id from lowtshow where user_id='"+it.getYhh()+"'";
pstm1=cm.prepareStatement(sql1);
ResultSet rs1=pstm1.executeQuery();
while(rs1.next()){
Device_id did=new Device_id();
did.setDevice_id(rs1.getString("device_id"));
list2.add(did);
}
for(int j=0;j<list2.size();j++){
for(int z=0;z<list1.size();z++){
sql2="update lowtshow set see_show=" +list1.get(z)+
" where device_id='"+list2.get(j)+"'and user_id='"+it.getYhh()+"'";
pstm2=cm.prepareStatement(sql2);
pstm2.executeUpdate();
}
}
System.out.print(123);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.print(456);
}
为什么注释掉的那部分 不注释的时候 就死循环了,打印不出456,注释掉后就能出来。为什么?而且那部分没有死循环,能出来。123也能打印出来
[解决办法]
未必是死循环,可能是后面的双重循环次数太多,短时间执行不出来而已。因为你注释的那部分,为list1增加了元素,但增加了多少个是不清楚的。
建议你修改:
System.out.print("for is over");
为:
System.out.println("for is over, list1: " + list1.size());
然后在:
for(int j=0;j<list2.size();j++){
for(int z=0;z<list1.size();z++){
这两句话之前,增加:
System.out.println("list2: " + list2.size() + "\tTotal: " + (list1.size()* list2.size());
然后麻烦说下打印的内容是啥,谢谢。