我在用jdbc做一个分页,其中做法是设置每次读取记录数st.setMaxRows(3);然后再用rs.absolute(5)把指针移动到相应的记录读取,可是当设置过st.setMaxRows(3)后,再用rs.absolute(5)就会返回false;而没有设置st.setMaxRows(3)就可以正常使用rs.absolute(5)。
st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);这个已经设过了。
难道这两条语句不能起用吗?那应该如何实现我的功能?请指教谢谢。

解决方案 »

  1.   

          st.setMaxRows(3);意思不是设置读取的最大记录数吗>?你设置为3,只读出了3条,rs.absolute(5)你把指针定位到第5条(rs.absolute(5))怎么灰会有数据呢?
          
          rs.absolute():意思是在你读出来的记录中从第几条开始,而不是按数据库中的ID来算的.
    所以你设置st.setMaxRows(5)应该不会有什么问题了.
         
          
      

  2.   

    应该先调用rs.absolute(5)将指针移动到相应的数据位置上;
    再调用st.setMaxRows(3)设置读取记录的最大个数;
      

  3.   

    为什么要这么做呢? 尤其是rs.absolute(5),我没用过
      

  4.   

    应该先rs.absolute(5)将指针移动到相应的数据位置上;
    再st.setMaxRows(3)设置读取记录的最大个数;
      

  5.   


    你设置的setMaxRows 是说返回最大记录是3条,但是你用rs.absolute(5),却要取第5条,肯定不能取到,你要保证取回的最大记录数一定要大于或等于rs.absolute(5)的条数
      

  6.   

    分页取值直接在sql语句中完成
    sqlserver 中sql分页方法,oracle和mysql就比较简单了int maxPerPage=6;//每页显示条数
    int curRow;//当前页数
    String sql = "select top "+ maxPerPage+ " * from yourtable where key not in (select top "+ curRow+ " key from yourtable)";