Rst = Stmt.executeQuery("select * from type order by type_order_id");
 Rst1 = Stmt.executeQuery("select * from type order by type_order_id");
 Rst2 = Stmt.executeQuery("select * from type order by type_order_id");

解决方案 »

  1.   

    Rst1.getXXX是不能重复读!要用变量!
      

  2.   

    为什么这样不能执行,会出现ResultSet is clossed?<%
     java.sql.Connection Conn;
     java.sql.Statement Stmt;
     java.sql.ResultSet Rst;
     
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      DriverManager.setLogStream(System.out);
      Conn = DriverManager.getConnection("jdbc:odbc:online","jsp_user","jsp");
      Stmt = Conn.createStatement();
     
     Rst = Stmt.executeQuery("select * from type order by type_order_id");
     
     while ( Rst.next() )
     {
      String type_id = Rst.getString("type_id");
      String type_name = Rst.getString("type_name");
      java.sql.ResultSet RstTmp = Stmt.executeQuery("select * from music_type order by music_type_id");
    %>
    <%=type_id%>.<%=type_name%>...<br>
    <%
     while( RstTmp.next() )
    {
      String music_id = RstTmp.getString("music_type_id");
      String music_name = RstTmp.getString("music_type_name");
    %>
    <%=music_id%>.<%=music_name%>...<br><%
    }
    }
    %>
    而这样就可以运行?
    <%
     java.sql.Connection Conn;
     java.sql.Statement Stmt;
     java.sql.ResultSet Rst;
     
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      DriverManager.setLogStream(System.out);
      Conn = DriverManager.getConnection("jdbc:odbc:online","jsp_user","jsp");
      Stmt = Conn.createStatement();
     
     Rst = Stmt.executeQuery("select * from type order by type_order_id");
     
     while ( Rst.next() )
     {
      String type_id = Rst.getString("type_id");
      String type_name = Rst.getString("type_name");
      
    %>
    <%=type_id%>.<%=type_name%>...<br>
    <%
    java.sql.ResultSet RstTmp = Stmt.executeQuery("select * from music_type order by music_type_id"); while( RstTmp.next() )
    {
      String music_id = RstTmp.getString("music_type_id");
      String music_name = RstTmp.getString("music_type_name");
    %>
    <%=music_id%>.<%=music_name%>...<br><%
    }
    }
    %>
    只不过是把java.sql.ResultSet RstTmp = Stmt.executeQuery("select * from music_type order by music_type_id");语句的位置动了一下,程序逻辑并没有错啊!
      

  3.   

    rs.beforeFirst()
    可以将指针重新移至开头public boolean first()public boolean previous()......
      

  4.   

    我分别定义了Rst和RstTmp,二者是不相干的!Rst读取type表,表里有几个小类,RstTmp读取子类表,表里有记录,例如程序中先用Rst读取type表中记录,显示subType1的名字,然后RstTmp读取subType1,显示表中所有记录,这是循环一次,接着Rst显示subType2的名字,然后RstTmp读取subType2,显示表中所有记录,如此循环!
      

  5.   

    不好意思,最上面搞错了
    <%java.sql.Connection Conn;
     java.sql.Statement Stmt;
     java.sql.ResultSet Rst;
     
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      DriverManager.setLogStream(System.out);
      Conn = DriverManager.getConnection("jdbc:odbc:online","jsp_user","jsp");
      Stmt = Conn.createStatement();
     
     Rst = Stmt.executeQuery("select * from type order by type_order_id");
     
     while ( Rst.next() )
     {
      String type_id = Rst.getString("type_id");
      String type_name = Rst.getString("type_name");
      
    %>
    <%=type_id%>.<%=type_name%>...<br>
    <%
    java.sql.ResultSet RstTmp = Stmt.executeQuery("select * from music_type order by music_type_id"); while( RstTmp.next() )
    {
      String music_id = RstTmp.getString("music_type_id");
      String music_name = RstTmp.getString("music_type_name");
    %>
    <%=music_id%>.<%=music_name%>...<br><%
    }
    }
    %>
    依然不能执行,只有把两个 while 分开时才可以运行,这是为什么?不能嵌套吗?