你在循环里输出rs的行号看看 while(rs.next())
{
...
System.out.println(rs.getRow());
}那个8000多是不是跟表的总记录数相同,或许开了8000多记录的空间,存取了179记录
如果这样rs.last()应该返回false
{
...
System.out.println(rs.getRow());
}那个8000多是不是跟表的总记录数相同,或许开了8000多记录的空间,存取了179记录
如果这样rs.last()应该返回false
while(rs.next())
{
String phone=rs.getString("times");
System.out.println(phone);
num++;
}System.out.println("数量:" + num);
估计是你rs没关造成的
不过其他都是空的,不要紧的吧
int size = rs.getRow(); // 取得记录数,注意这里!!!!
rs.beforeFirst();
System.out.println("TIMES"+size); //!!!!!!!!!!
最诡异的问题是那个 while(rs.next())循环会抛出异常,当显示了179个记录以后。
感觉就是rs里边实际只有179个记录,但是他自己认为自己有8000多个
请有经验的朋友提醒下呢~
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 然后再试一下
既然是对的那就找为什么 而不是找方法改变它 你要想看不见8000 把那输出删掉就OK你要得到记录数 循环完了 rs.getRow()就是你的记录数也许说明了你这种方法取记录数是不可取的 至少当group by时 group by时 它数据库里相关记录数还是8000多 它先开了这么大的空间 然后把你要的结果记录处理后也存在了同一空间里 所以 rs.last()指向了空间的末尾 而不是你想要的记录数末尾上面的只是猜想和一种可能
你要得到总记录数,我建议你最好把数据集用循环+1的方法来实现吧
{
String phone=rs.getString("times");
System.out.println(phone);
}
我百思不得其解,才加了一段代码,看看rs的size是多少,结果发现是8000多,后来我把rs.next() 改成 !rs.isLast()结果还是异常。
刚刚把sql server 配置好了,马上试下