你在循环里输出rs的行号看看      while(rs.next())
           {               
               ...
               System.out.println(rs.getRow());
           }那个8000多是不是跟表的总记录数相同,或许开了8000多记录的空间,存取了179记录
如果这样rs.last()应该返回false

解决方案 »

  1.   

    在循环完的时候 也可以查看rs.isLast() 是true 还是false
      

  2.   

    8000多是总记录数,难道我在sql语句中使用了group by 还会返回8000多条记录吗?
      

  3.   

    int num = 0;
    while(rs.next())
    {
     String phone=rs.getString("times");
     System.out.println(phone);
     num++;
    }System.out.println("数量:" + num);
      

  4.   

    你是debug的时候看到8000多的吧?
    估计是你rs没关造成的
    不过其他都是空的,不要紧的吧
      

  5.   

    不是debug,就是下面3句语句。        
                int size = rs.getRow(); // 取得记录数,注意这里!!!!
                rs.beforeFirst();    
                System.out.println("TIMES"+size); //!!!!!!!!!!
    最诡异的问题是那个 while(rs.next())循环会抛出异常,当显示了179个记录以后。
    感觉就是rs里边实际只有179个记录,但是他自己认为自己有8000多个
      

  6.   

    在java里使用 group by 语句有什么需要注意的吗?
    请有经验的朋友提醒下呢~
      

  7.   

    jdbcodbcdriver好象不支持rs.last()和rs.beforeFirst()方法吧,你在创建stmt时,这样创建   
        Statement   stmt   =   conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 然后再试一下
      

  8.   

    按楼上的做了 没有变化,我原来第二个参数 是 concur_updatable
      

  9.   

    唉 朋友说可能是access的问题,马上换个sql server 看看
      

  10.   

    既然编译和输出结果都没有提示出错 那就是对的 
    既然是对的那就找为什么 而不是找方法改变它 你要想看不见8000 把那输出删掉就OK你要得到记录数 循环完了 rs.getRow()就是你的记录数也许说明了你这种方法取记录数是不可取的 至少当group by时 group by时 它数据库里相关记录数还是8000多 它先开了这么大的空间 然后把你要的结果记录处理后也存在了同一空间里 所以 rs.last()指向了空间的末尾 而不是你想要的记录数末尾上面的只是猜想和一种可能
      

  11.   

    getRow();  rs.last();   rs.beforeFirst();这几个方法是要根据不同的数据库、driver或者数据库中游标和锁来决定是否能使用的,我印象里好像oracle可以对这几个方法完全支持,其他数据库一般要看情况了。
    你要得到总记录数,我建议你最好把数据集用循环+1的方法来实现吧
      

  12.   

    谢谢各位捧场,不过我的关键问题不是要得到rs里边的总数是多少,而是这个循环在输出179个正确答案后会抛出异常:  [Microsoft][ODBC 驱动程序管理器] 无效的游标状态         while(rs.next())
               {
                   String phone=rs.getString("times");
                   System.out.println(phone);
               }
    我百思不得其解,才加了一段代码,看看rs的size是多少,结果发现是8000多,后来我把rs.next() 改成 !rs.isLast()结果还是异常。
    刚刚把sql server 配置好了,马上试下
      

  13.   

    我大大的一滴汗! 果然是access的问题,我用SQL SERVER就没有问题了