.last()不是得到记录的行数,在jdk文档中如此描述:
public boolean last()
             throws SQLException    Moves the cursor to the last row in this ResultSet object.    Returns:
        true if the cursor is on a valid row; false if there are no rows in the result set 
    Throws:
        SQLException - if a database access error occurs or the result set type is TYPE_FORWARD_ONLY

解决方案 »

  1.   

    这个我知道,我是说我通过.last()之后这样得到记录数:
              if (rs.last())
              {
                count = rs.getRow();
              }
      

  2.   

    ResultSet是接口,不同数据库JDBC驱动的实现可能完全不同,只是这样的做法一定不会效率太高的
      

  3.   

    这个是因为使用.last()实际上迭代访问了所有记录,在纪录数很多的情况下效率当然很低
    用别的办法,比如select count
    不过效率也不是很高,当数据量很大的时候。数据库索引对这个有影响
      

  4.   

    to  tigeryu(吴越小虎) :
     不同数据库实现还会不一样?这个能详细些吗?另外:
     .last()内部过程是不是相当于(我知道结果是一样的,但关键是内部实现):
    while(!(rs.isLast()))
    {
      rs.next();
    }
      

  5.   

    不同数据库实现还会不一样?这个能详细些吗? 就是说不同数据库的jdbc接口实现方式不一样,有的数据库可能在内部对这些接口作了优化,而有些数据库甚至有些驱动直接是遍历的结果集 当然效率不一样了,jdbc只是个接口规范 实现不实现 如何实现都是厂家的事