使用 group by 子句后的ResultSet的问题!!
数据库(ACCESS)中有许多电话号码,我要统计每个号码出现多少次,在Java中写代码: 
    String   sql= "select   count(phone)   as   times "   + 
                                                  "   from   yzx      group   by   [phone]    "; 
                         DBManager   db=new   DBManager(DBManager.JDBC_ODBC_DRIVER);//这个类是自己写的,为了方便,就是连接数据库,创立statement 
                            try 
                         { 
                                  db.openDatabase( "jdbc:odbc:phone "); 
                                  ResultSet   rs=db.executeSQL(sql); 
                                  rs.last();    
                                  int   size   =   rs.getRow();   //   取得记录数,注意这里!!!! 
                                     rs.beforeFirst();             
                                     System.out.println( "TIMES "+size);   //!!!!!!!!!! 
                                  while(rs.next()) 
                                  { 
                                              String   phone=rs.getString( "times "); 
                                              System.out.println(phone); 
                                  }   
                            } 
                            catch(Exception   e) 
                            { 
                                        System.out.println(e.getMessage()); 
                            } 
          } 
 输出的结果是正确的,一共有179个不同的号码,所以是179个数字,但是ResultSet的size却是8000多,于是,最后在while(rs.next())抛出了异常: 
 [Microsoft][ODBC   驱动程序管理器]   无效的游标状态   
 太奇怪了,为什么resultset的size没有按照phone归类阿??!! 
 PS:上面那句sql语句在access里执行结果完全正确 
------解决方案--------------------在循环完的时候 也可以查看rs.isLast() 是true 还是false 
------解决方案--------------------getRow();  rs.last();   rs.beforeFirst();这几个方法是要根据不同的数据库、driver或者数据库中游标和锁来决定是否能使用的,我印象里好像oracle可以对这几个方法完全支持,其他数据库一般要看情况了。 
 你要得到总记录数,我建议你最好把数据集用循环+1的方法来实现吧