试试这几个方法
rs.setFetchSize()
rs.setFetchDirection()
rs.absolute()如果不行,那你也许只能把全部记录都读出来,
然后再移动游标了。

解决方案 »

  1.   

    你可以重写一个与ResultSet功能相同的但却不像它那样会被自动回收的结果集,之后就可以随意操作任意一条记录了。
      

  2.   

    可以利用数据库的一个函数来生成临时的一个递增列,(根据你的数据库类型有不同的函数,如db2是row_number() over (),oracle是rownum)完整的sql语句如下:
    Select * from (" Select " + FieldString + ", row_number() over () RowsID  "
                  + "     from "
                  + "     ( " + SQLString
                  + "      ) round1 "
                  + ") A"
                  + " where  A.RowsID > " + ( (PageNum - 1) * intRow)
                  + " and A.RowsID <= " + (PageNum * intRow) ;
      

  3.   

    思路不对呀,
    我是在bean里面
    不用rs
    你看看代码:
      //取得查询时候每页的现实数据
      public Vector getSearchResult() {
        Vector tt = new Vector();
        DBConnect con=new DBConnect();
        try {
          int fromNumber = (currentPage - 1) * pageResultNumber;
          ResultSet rs = con.executeQuery(searchSql + " limit " + fromNumber + "," +
                                           pageResultNumber);
          while (rs.next()) {
            Vector wy = new Vector();
            for (int n = 1; n <= rs.getMetaData().getColumnCount(); n++) {
              wy.addElement(rs.getObject(n));
            }
            tt.addElement(wy);
          }
        }    catch (Exception ex) {
          System.out.println(ex);
        }
        finally{
          con.close();
          con=null;
        }
        return tt;
      }
    /*
    其中
    currentPage:当前页数
    pageResultNumber:在一个页面中显示几条数据
    searchSql:查询的SQL一句
    fromNumber:要从第几条数据开始查询*/
      

  4.   

    分页显示的本质是断开结果集:
    给出一个函数,用用看:       
            
             //取得断开结果集  //Vector 来自java.util.*;相当于列表一类的数据结构,使用很方便的
            public Vector Get_RS(String QueryStr, int rs_start, int intPageSize)
            {
              Vector v = new Vector();
              db db1 = new db();
              ResultSet rs = null;
              try {
                rs = db1.executeQuery(QueryStr, 1007);
                if (rs_start != 0)
                  rs.absolute(rs_start * intPageSize);
                for (int i = 0; i < intPageSize && rs.next(); i++)
                {
                  Vector vt = new Vector();
                  vt.addElement(rs.getString("xx1"));//0
                  vt.addElement(rs.getString("xx2"));//1
                  ...
                  v.addElement(vt);
                }
              }
              catch (Exception ex) {
                System.out.println(ex.toString());
              }
              finally {
                db1.freeRs(rs);
              }
              return v;
            }
      

  5.   

    to rubber365(热锅蚂蚁)
    可以给我解释一下这句吗
    for (int i = 0; i < intPageSize && rs.next(); i++)
    intpagesize:一个页要显示多少条记录
    而为什么要&&rs.next()这句
    是如果有8条记录,而intpagesize=3
    最后一页就是2条而用intpagesize就会有错误?
    谢谢!
      

  6.   

    从第5个开始后的10 个纪录可以这样写
    select top 10 * fron table where ID not in (select top 5 * from table order by ID)
    order by ID
    我前些天做分页就是这种办法,效率不错,比滚动结果集要快
      

  7.   

    产生记录集rs,然后直接定位rs.absolute(int),下面就一条一条显示吧