数据库连接及数据库执行类的对象:conn表xtbh结构:
  JHH(主键,进货号)   RQ(日期) BH(商品编号) ResultSet rs=conn.executeQuery("select bh from xtbh order by bh ASC");
ResultSet rs1=null;
String bh=null;
String sql="";
String jhh="";while (rs.next()){
   bh=rs.getString("bh");
   out.println(bh);
   sql="select * from xtbh where bh='"+bh+"'";
   rs1=conn.executeQuery(sql);
   while (rs1.next()){
     jhh=rsq.getString("JHH");
     out.println(jhh);
   }}为什么这样做,只能显示出查找后的第一条记录(rs和rs1都是),出错信息显示"null".
请高手指点是什么问题?
怎么解决?

解决方案 »

  1.   

    ResultSet rs=conn.executeQuery("select bh from xtbh order by bh ASC");
    ResultSet rs1=null;
    String bh=null;
    String sql="";
    String jhh="";while (rs.next()){
       bh=rs.getString("bh");
       out.println(bh);
       sql="select * from xtbh where bh='"+bh+"'";
       rs1=conn.executeQuery(sql);
       while (rs1.next()){
         jhh=rsq.getString("JHH");
         out.println(jhh);
       }// 
       rs1.close();}
      

  2.   

    rs1.close()写上还是以前的结果!
      

  3.   

    要不你new两个connection试试啊~
    我觉你在执行第一次外层循环后rs所对应的connection变了,被内层的覆盖了~
      

  4.   

    ResultSet rs=conn.executeQuery("select bh from xtbh order by bh ASC");
    ResultSet rs1=null;
    String bh=null;
    String sql="";
    String jhh="";while (rs.next()){
    bh=rs.getString("bh");
    out.println(bh);
    sql="select * from xtbh where bh='"+bh+"'";
    rs1=conn.executeQuery(sql);
    /*
    rs = conn.execuetQuery(sql)
    这句话的意思是说一个连接执行了一条语句并把一组记录的指针首地址给rs,通俗点说conn中放了你所查询的结果
    rs1 = conn.executeQuery(sql)
    注意这时候conn执行了另一条语句,放了rs1的结果,这时候rs.next()执行肯定会错误,因为conn所放的东西的地址不是以前,这时候就会关闭
    */
    while (rs1.next()){
    jhh=rsq.getString("JHH");
    out.println(jhh);
    }}
      

  5.   

    rs,rs1其实都是指向conn的指针.