while(rs2.next()){
ls = rs2.getString("istopic");
if(ls=="0"||ls.equals("0")){  
out.println("id:"+rs2.getString(1)+"|"+rs2.getString(2));
while(rs.next()){
out.println("--"+i+"--");
j++;
}
}
i++;
}rs是表A的结果
rs2是表A跟表B的视图表
为什么第一次进入的时候就能将表A的东西罗列出来,但是第二次(也就是rs2.next()进入第二次循环)时就不会罗列表A的东西呢?我想做的是:
通过判断视图表中的type_id是否跟表A的id一致,是一致就罗列在它的下方,其实就是做一个树状的图;

解决方案 »

  1.   

    因为rs已经遍历完毕,第二次rs2.next()时,再取rs.next()已经取不到值了
    解决方法,将rs中的值先取出来放在List或者Array中,如
    List list = new ArrayList();
    while(rs.next()){       
    list.add(rs.getString(1));
    }
    while(rs2.next()){
        ls = rs2.getString("istopic");
        if(ls=="0"||ls.equals("0")){  
            out.println("id:"+rs2.getString(1)+"|"+rs2.getString(2));
            for(int k=0;k<list.size();k++){
                out.println("--"+i+"--");
                j++;
            }
        }
        i++;
    }
      

  2.   

    同意,我觉得也可以在
            out.println("id:"+rs2.getString(1)+"|"+rs2.getString(2));
            while(rs.next()){
    中间加入
    rs = statement.executeQuery(sql);
    这样rs2每循环一次就从新给rs赋值,当然这个方法不如上面的好
      

  3.   

    rs.beforeFirst();
     while(rs.next()){
                out.println("--"+i+"--");
                j++;
            }
      

  4.   

    建议在while(rs.next()){...}的时候,把值放到List list=new ArrayList()中,
    再return 一个list,这时候就可以取值了。
      

  5.   

    每次都rs = statement.executeQuery(sql);
    你不觉得浪费资源吗?从小学老师就教你节约,节约,都这么大了还不知道节约。。哎。。