jdbc连接Oracle时,同一个Statement只能保持一个ResultSet。
当你开第二个ResultSet rs_son的时候,rs_main被自动close了。所以你要先把rs_main中查询得到的结果先保存在变量中,然后再执行rs_son的查询。
也可以开两个Statement,一个ResultSet对应一个Statement

解决方案 »

  1.   

    Tasia(这里是CSDN吗?)大哥
     我的是SQL server 数据库啊
      

  2.   

    Sql server和Oracle在这个问题上实现方法有不同。
    印象中SQL Server中一个Connection只能开一个Statement。
      

  3.   

    谢谢大家
    错误代码如下:
    javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.Test_jsp._jspService(Test_jsp.java:237)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      

  4.   

    呵呵,楼主和我一样啊,
    我问了几天也没解决,后来我就用MYSQL了,
    哎。。
    楼主加油哦!
      

  5.   

    把Test_jsp.java的代码也贴出来吧!
      

  6.   

    to myxd(c++):
      我没有Test_jsp.java啊
      

  7.   

    wenyuxu(文娱) 
    您能不能先把
            strSQL_Son = "SELECT S.KEY_SonNo,S.SonName,S.SonData,S.SonImage,S.SonMenu ,S.Forward" +
       " from Sys_SonModule S ,Sys_MainModule M" +
       " WHERE S.KEY_MainNo=M.KEY_MainNo" +
       " AND M.KEY_MainNo ='" + rs_main.getString(1) + "'";
     try
      {
           rs_son = conn.ExecuteQuery(strSQL_Son);
      }
       catch(Exception e)
      {
    out.println(e.toString());
      }
      
              if(rs_son.next())
              { 
                 out.println("OutBarFolder" + i + "=new Array(");
                 out.println( "\"" + rs_main.getString(2) + "\"");  ///// 执行到此处出错!!          while (rs_son.next())
             {
               out.println( ",");
               out.println( "\"" + rs_son.getString(4) + "\",\"" + rs_son.getString(2) + "\",\""+rs_son.getString(6)+"?title=" + rs_son.getString(2) + "&url=" + rs_son.getString(3) + "&SonMenu=" + rs_son.getString(5) + "\",\"top.main\"");
                  }
               out.println(");");
                i = i + 1;
               }
           
    这部分去掉,看报错不?我也记不清一个con支持几个state了。
      

  8.   

    那就可能是真的不支持多个state。你在得到第二个state前,再 new SysConn();不就行了!
      

  9.   

    只好采用myxd(c++)大哥 的方法了
    谢谢
    给分