我利用SQL Server2005数据库,要想现实JSP分页显示效果?

解决方案 »

  1.   

    http://icansoft.blog.51cto.com/268543/54310
      

  2.   


    <!-- 分页显示 --> 
    <%
    final int PAGE_SIZE = 20;//每页显示的帖子数
    int pageNo = 1;//页号
    String strPageNo = request.getParameter("pageNo");
    if(strPageNo != null && !strPageNo.trim().equals("")) {
    try {
    pageNo = Integer.parseInt(strPageNo);
    } catch (NumberFormatException e) {
    pageNo = 1;

    }
    if(pageNo <= 0) pageNo = 1;
    int totalPages = 0;//总的页数
    List<Article> articles = new ArrayList<Article>();
    Connection conn = DB.getConn();
    Statement stmtCount = DB.createStmt(conn);
    ResultSet rsCount = DB.executeQuery(stmtCount, "select count(*) from article where pid = 0");
    rsCount.next();
    int totalRecords = rsCount.getInt(1);
    totalPages = (totalRecords + PAGE_SIZE - 1)/PAGE_SIZE;
    if(pageNo > totalPages) pageNo = totalPages;
    Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
    int startPos = (pageNo-1) * PAGE_SIZE; 
    //String sql = "select * from article where pid = 0 order by pdate desc limit " + startPos + "," + PAGE_SIZE ;
    //int ss=PAGE_SIZE+startPos-1;
    //String sql ="SELECT * FROM ( SELECT TOP "+PAGE_SIZE+" * FROM (SELECT TOP "+ss+" * FROM article order by pdate desc) t1) t2 Order by pdate asc";
    //System.out.println(sql);
    String sql="select * from article where pid=0 order by pdate desc";
    ResultSet rs = DB.executeQuery(stmt, sql);  
      if(totalPages>0){   
            //将记录指针定位到待显示页的第一条记录上   
            rs.absolute(startPos + 1);   
            int i   =   0;   
            while(i<PAGE_SIZE   &&   !rs.isAfterLast()){   
                  Article a = new Article();
              a.initFromRs(rs);
              articles.add(a);   
                  rs.next();   
                  i++;   
            }   
      }   
    DB.close(rsCount);
    DB.close(stmtCount);
    DB.close(rs);
    DB.close(stmt);
    DB.close(conn);
    %>
      

  3.   

    SQL standard 2003 新带来的 SQL 窗口函数(Window function) ROW_NUMBER() OVER () , 数据库 SQL server 2005/DB2/Oracle 都支持,Oracle 与标准略为有点差别。 Mysql/PostgreSQL 则不支持 ROW_NUMBER()。
    可以看我的博客文章:
    原创  VelocityWeb 1.3 发布,增加 SQL 分页支持!!支持多种数据库!
    http://blog.csdn.net/jacklondon/archive/2008/08/23/2816824.aspx