使用 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里执行结果完全正确