哦,忘了说了,是SqlServer2000的驱动!

解决方案 »

  1.   

    是不是你的ResultSet是只向前的.不能随意滚动
      

  2.   

    不是啊!提示的意思应该是不支持last和first啊!我试过别的SqlServer2000的驱动倒是发现过只能forward的
      

  3.   

    从Connection创建Statement的时候(createStatement方法)使用那个双参数的方法,参数是Result对象的静态常数.使用TYPE_SCROLL_SENSITIVE或者TYPE_SCROLL_INSENSITIVE常数。
      

  4.   

    你的Statement对象是这样创建的吗?
    //创建一个可以滚动的只读的SQL语句对象
    java.sql.Statement sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
      

  5.   

    你的Statement对象可能是这样建立的:
    Statement st=conn.createStatement();
    没有指定参数,改为我上面的试试
      

  6.   

    检查一下你的数据库表是否有ntext或nvarchar的列,如果有,那八成是这个原因,最好改成varchar
      

  7.   

    你的该改为如下(其中conn是Connection对象,我最上面用的是sqlCon)
    Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
      

  8.   

    (我遇到的问题和楼主一样)不过我使用的是链接池,以为是链接池出问题!死找。
    原来是我创建Statement 时没有参数!
    加上ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY之后可以了,resultset.last()可以用了。
      public ResultSet executeQuery(String sql) {
        openDB();
        try {
        stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
         rs = stmt.executeQuery(sql);
        } catch(SQLException ex) {
          //记录一个错误
          ex.printStackTrace();
        }
        return rs;
      }