Only one ResultSet object per Statement object can be open at any point in time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All statement execute methods implicitly close a statment's current ResultSet object if an open one exists.
Manager rrMgr=new Manager();
Manager subMgr = new Manager();
ResultSet rootRs=rrMgr.getRootMenu(id);
ResultSet subRs;
   while(rootRs.next()){
           subRs=subMgr.getSubMenu(id,rootRs.getInt(2));
               while(subRs.next()){

解决方案 »

  1.   

    你先把顶机菜单取出来放到一个数组或者ArrayList之类的数据结构里。然后关掉第一个ResultSet,对这个数组或者ArrayList进行循环,在循环中利用第二个ResultSet来取得子菜单。
    因为我没用过Manager,只是给你提供一个思路。
      

  2.   

    我上面的那个写法在日志LOG中观察可以得到第二个结果集,但是就是不能执行://代码行二
    myMenu.makeMenu('<%=subRs.getString(3)%>','<%=rootRs.getString(3)%>','&nbsp;<%=subRs.getString(4)%>','<%=subRs.getString(6)%>+<%=subRs.getString(1)%>')
    救命!