sql = " SELECT * "+
             " FROM (SELECT  Row_Number() OVER (ORDER BY empno) AS RowId, * "+
             " FROM  emp) U " +
             " WHERE U.RowId BETWEEN ? AND ? ";
   
   ps = conn.prepareStatement(sql);
   ps.setInt(1,currentPage*lineSize);
   ps.setInt(2,(currentPage-1)*lineSize);
   //ps.setInt(2,currentPage*lineSize);
   rs = ps.executeQuery();

解决方案 »

  1.   

    sql server好像是要用top嵌套一下吧,多年不用sql server了
      

  2.   

    记得sql server中应该是limit,具体的lz去查下ms sql的手册就可以了
      

  3.   

    这样写是可以的,用top子句也行
      

  4.   

    注意between的前值要比后值
      

  5.   

    呵呵,我用的是sql server 2005数据库,自己花了一个晚上,加上今天一个上午终于搞定了,
    是下面的语句有问题,正确的写法应该是:
    <%
     while(rs.next()){
       int empno = rs.getInt(1);
       String ename = rs.getString(2);  
       String job = rs.getString(3);
       String hiredate = rs.getString(4);  //注意此处不能用,Date hiredate = rs.getDate(4);
       String sal = rs.getString(5);       //注意此处不能用,Double sal = rs.getDouble(5);一定要记住!
    %>但还是给热心的朋友送分,谢谢!
      

  6.   


    假设每页表示20条数据
    因为RowId从1开始
    第一页:RowId=1~RowId=20 (RowId BETWEEN 1 AND 20)
    第二页:RowId=21~RowId=40 (RowId BETWEEN 21 AND 40)
    ......currentPage是从几开始的啊?
    如果是从0开始的话( 0,1,2,3,4。)
    ps.setInt(1,currentPage*lineSize + 1 );
    ps.setInt(2,(currentPage+1)*lineSize);
      

  7.   

    java + sqlserver不是好选择