是不是和String的定义有关,试试String s2=null;

解决方案 »

  1.   

    ResultSet RS1=...;
    while(RS1.next())
    {
      String s=RS1.getString(1);//s是下面查询的一个参数
      ResultSet RS2=...;
      while(RS2.next())
      { 
         //写文件
      }
      RS2.close();
      
    }
    RS1.close();
    循环只能进行一次。把内部和外部分开,都能正常进行。求高手帮忙!
      

  2.   

    只能进行一次,那进行一次以后出现什么情况了?我觉得程序没有问题,可能和你那句String s=RS1.getString(1);//s是下面查询的一个参数有关, 你确定每次循环都得到一个正确的参数以使下面的查询能正确通过吗? 我估计可能是得到的参数不对,使用查询出现异常使用跳出了循环
      

  3.   

    这应该和你在rs1的循环中关闭rs2造成的,虽然从代码看每次进行循环都会生成新的rs2但是执行的过程未必真的就是这样,而且这样的代码很影响效率.建议把rs2的定义和rs2的关闭都放到循环外,每次循环都只是对rs2重新赋值,这样性能上也会好得多:String s1="";
    ResultSet RS1=...;
    String s2="";
    ResultSet rs2=null;
    while(RS1.next())
    {
      s2="";
      RS2=...;
      while(RS2.next())
      {
      }
    }
    rs2.close();
    RS1.close();
      

  4.   

    to  bromon(到哪里都跟你要认识) :继续求助按您的指示改后,内部的while可以循环了,但是外部while还是不行。我感觉这close()真是奇怪。不close又不行
      

  5.   

    RS2.close();这句有问题,如果关闭了,RS2便不可用了。
      

  6.   

    我现在把RS1.close()和RS.close()都去掉了,但只有内部while可以循环,但外部还是只一次。程序也没捉到什么异常。
      

  7.   

    ResultSet RS1=...
    是什么意思,谢谢,我是初学者《-----仁者见仁,智者见智--------》
      

  8.   

    好好看看jdbc规范。一个Statement对象同时只能有一个结果集在活动.就是说即使没有调用ResultSet的close()方法,只要打开第二个结果集就隐含着对上一个结果集的关闭.所以如果你想同时对多个结果集操作,就要创建多个Statement对象当ResultSet RS2=...;这时隐含的操作是已经关闭了RS1,你还能循环下去吗?
    所以如果要同时操作多个结果集一定要让它他绑定到不同的Statement对象上.一个connection对象可以创建任意多个Statement对象,而不需要你重新获取连结.
      

  9.   

    可是我在jsp里这样用,却没有问题。
      

  10.   

    hutlyx(胡里糊涂)和hlding(淋东)两位大侠:请看:http://expert.csdn.net/Expert/topic/2432/2432333.xml?temp=.6616327另外:有没有JDBC的规范,能发给我[email protected]
    或告诉我下崽网址。谢谢!
      

  11.   

    在jsp访问oracle时我遇到过,建立2个statement,声明2个ResultSet才可以 什么原因我不知道   看看如 hutlyx(胡里糊涂)   的确所说那样  
    好像对于access时没有这样的问题吧