Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rset = stmt.executeQuery("select * from yourtable");
ResultSetMetaData rsmd = rset.getMetaData() ;int columnCount = rsmd.getColumnCount();//得到列数
rset.last();
int rowCount = rset.getRow();
//用last()方法把光标一道最后一行记录,然后用getRow()方法得到该行行号,就是总记录数另外,如果是更新操作,那么executeUpdate()方法返回的就是该语句所修改的行数。

解决方案 »

  1.   

    我是这么做的,编译能通过,可是一运行就显示如下错误:
    Exception in thread "main" java.lang.UnsupportedOperation Exception
    at sun.jdbc.odbc.JdbcOdbcResultset.last(JdbcOdbcResultset.java:2411)
      

  2.   

    那是因为你的jdbc不支持光标滚动方法。换一个高版本的jdbc。或者这么做:
    int rowCount = 0;
    while(rset.next()){
      rowCount++;
      //
    }
      

  3.   

    那我在哪里下载高版本的JDBC?我已经安装了一个JDK1.4版本,但还是不行,JDBC是不是要单独下载啊?
      

  4.   

    是要单独下载的。JDBC是和你所用的数据库与JAVA编程环境交换数据的中间环节,如MS SQLServer 2000有它自己的JDBC驱动,ORACLE也有他自己的JDBC驱动。
      

  5.   

    直接用select count(*) from ...的SQL语句就不存在这个问题了
      

  6.   

    select count(*) from ...可能会有些问题,有些时候计算的数据不准确,这个里面和数据库的并发机制有密切的关系
      

  7.   

    Exception in thread "main" java.lang.UnsupportedOperation Exception
    at sun.jdbc.odbc.JdbcOdbcResultset.last(JdbcOdbcResultset.java:2411)你是用的odbc吧
      

  8.   

    select count(*) as account from 表名
      

  9.   

    我用的是JDBC:ODBC,难道用它,Resultset就不能使用last(),firt(),getRow()方法吗?我怎么才能得到记录总数?
      

  10.   

    你的statement是怎么建立的?参数正确吗?把代码贴出来吧
    用odbc也是可以last的,关键就是参数。
      

  11.   

    不是的,有的jdbc版本就不支持上面你说的,楼上的。
      

  12.   

    sqlfox=cnfox.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    sqlsql=cnsql.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    运行期提示:
    Exception in thread "main" java.lang.UnsupportedOperation Exception
    at sun.jdbc.odbc.JdbcOdbcConnection.createStatement((JdbcOdbcResultset.java:1011)
    可能我的JDBC不支持,那我在哪里下载高版本的JDBC呢?