weblogic服务器,oracle数据库,jdbc连接池。代码:    int count=0;
    if(rs.next() && count<1000){
       ……
       System.out.println(rs.getString(1));
       count++;
    }异常:
2010-02-10 14:55:06,359 [ERROR][com.dc.gdhl.dao.CtaisDAOStringImpl]:SQL异常:
java.sql.SQLException: ResultSet has no more data.
at weblogic.jdbc.oci.ResultSet.next()Z(ResultSet.java:752)
at weblogic.jdbc.wrapper.ResultSet_weblogic_jdbc_oci_ResultSet.next()Z(Optimized Method)
at com.dc.gdhl.dao.CtaisDAOStringImpl.createXml(Ljava.lang.String;ILjava.lang.String;Ljava.lang.String;II)Ljava.lang.String;(Optimized Method)
at com.dc.gdhl.dataHandler.GsDataHandlerAbst.generateXmls()Ljava.io.File;(GsDataHandlerAbst.java:143)
at com.dc.gdhl.dataHandler.GsDataHandlerAbst.execute()V(GsDataHandlerAbst.java:84)
at com.dc.gdhl.job.OrganizeGsDataJob.execute()V(OrganizeGsDataJob.java:57)
at com.dc.gdhl.mytest.JHPTSessionBean$1.run()V(JHPTSessionBean.java:49)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
2010-02-10 14:55:06,359 [ERROR][com.dc.gdhl.dataHandler.GsDataHandlerAbst]:SQL异常:
com.dc.gdhl.Exception.GdhlException: SQL异常:
at com.dc.gdhl.dao.CtaisDAOStringImpl.createXml(Ljava.lang.String;ILjava.lang.String;Ljava.lang.String;II)Ljava.lang.String;(Optimized Method)
at com.dc.gdhl.dataHandler.GsDataHandlerAbst.generateXmls()Ljava.io.File;(GsDataHandlerAbst.java:143)
at com.dc.gdhl.dataHandler.GsDataHandlerAbst.execute()V(GsDataHandlerAbst.java:84)
at com.dc.gdhl.job.OrganizeGsDataJob.execute()V(OrganizeGsDataJob.java:57)
at com.dc.gdhl.mytest.JHPTSessionBean$1.run()V(JHPTSessionBean.java:49)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
Caused by: java.sql.SQLException: ResultSet has no more data.
at weblogic.jdbc.oci.ResultSet.next()Z(ResultSet.java:752)
at weblogic.jdbc.wrapper.ResultSet_weblogic_jdbc_oci_ResultSet.next()Z(Optimized Method)
... 6 more

解决方案 »

  1.   

    数据库里的第一个子段是varchar2类型的????
      

  2.   

    我还有点不明白count++了,你为什么还是if??
    应该是int count=0;
        while(rs.next() && count<1000){
           ……
           System.out.println(rs.getString(1));---这里getString对应了数据库里的字段了?
           count++;
        }
      

  3.   

    补充:
    这个异常只是在所有结果都打印(print)出后才会出现。
      

  4.   

    用while的目的是,循环结果,每1000条生成一个文件,到最后时不够1000条数据,则出现了如上异常。
      

  5.   

    ResultSet has no more data我怀疑:
    结果集指针已经到了最后一行,但是你还是rs.getXXX()操作...
    愚见谨供参考
      

  6.   


    测试了很多次,当rs.next()没有值时就不会执行while中的语句。