`
tianya85
  • 浏览: 34614 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

分页函数算法

阅读更多

   最近在做毕业设计,界面要用到分页技术,于是就将自己所整理的以及思考的结果整理出来给大家分享,希望对你们有所帮助。

  首先分页要用到4个属性

  pageNow:当前页 

       pageSize:每页条数 

       pageCount:总页数 

        rowCount:总条数

        其中rowCount可以通过查询获得,而pageCount可以通过计算获得。    

 

  1. <pre name="code" class="java">if(rowCount%pageSize==0){  
  2.                 pageCount=rowCount/pageSize;  
  3.             }else{  
  4.                 pageCount=rowCount/pageSize+1;</pre><br><br>  

       不过这段代码完全可以简化位一句:

 

       pageCount=(rowCount+pageSize-1)/pageSize;//计算总页数

  下面给出详细的算法和分析:

  1. public ArrayList<UserBean> getUsersByPage(String sql,int pageSize,int pageNow){  
  2.         ArrayList<UserBean> al=new ArrayList<UserBean>();  
  3.         try {  
  4.               
  5.             Connection conn=this.getConn();  
  6.             System.out.println(conn);  
  7.             ps=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
  8.             rs=ps.executeQuery();  
  9.             rs.last();//光标指向查询结果集中的最后一条记录  
  10.             int rowCount=rs.getRow();//获取记录总数  
  11.             int pageCount=(rowCount+pageSize-1)/pageSize;//计算总页数  
  12.             if(pageNow>pageCount) pageNow=pageCount;  
  13.             if(pageNow<1) pageNow=1;  
  14.             if(pageCount>0){  
  15.                 /*将记录定位到待显示页的第一条记录上,absolute(int row)函数 
  16.                  * 表示将记录移动指定的row行中*/  
  17.                 rs.absolute((pageNow-1)*pageSize+1);  
  18.                 int i=0;//设置计数器  
  19.                 //i小于pageSize并且光标还没移动到最后一行记录的后面  
  20.                 while(i<pageSize&&!rs.isAfterLast()){  
  21.                     UserBean ub=new UserBean();  
  22.                     ub.setUserid(rs.getInt(1));  
  23.                     ub.setUsername(rs.getString(2));  
  24.                     ub.setTruename(rs.getString(3));  
  25.                     ub.setEmail(rs.getString(4));  
  26.                     ub.setPhone(rs.getString(5));  
  27.                     ub.setAdress(rs.getString(6));  
  28.                     ub.setPostcode(rs.getString(7));  
  29.                     ub.setGrade(rs.getInt(8));  
  30.                     rs.next();  
  31.                     i++;  
  32.                     al.add(ub);  
  33.                 }  
  34.             }  
  35.   
  36.         } catch (Exception e) {  
  37.             // TODO: handle exception  
  38.             e.printStackTrace();  
  39.         }finally{  
  40.             this.close();  
  41.         }  
  42.         return al;  
  43.     }  

  其中ps=conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)中必须用到可滚动的结果集TYPE_SCROLL_INSENSITIVE,表示rs指针可再结果集上前后滚动移动,rs.last()就表示了这个用法。

       而getConn()为数据库连接函数,close()为关闭资源函数,还有一个UserBean的get和set函数,这些应该是不难的。

       有不理解或是不足的地方欢迎提出!

 

csdn原文:http://blog.csdn.net/zjtimef/article/details/12688903

1
0
分享到:
评论
3 楼 tianya85 2013-10-17  
玩耍王 写道
我去,每次分页都得取得所有的数据,如果是1万、10万、100万的呢?

弟兄,没有一个算法公式是万能的。
在jsp页面是,可以通过for循环来限制显示的数目
for (int i = pageNow; i <= pageNow + n; i++){  }
pageNow当前页,在当前页的基础上再显示n条。
2 楼 玩耍王 2013-10-17  
我去,每次分页都得取得所有的数据,如果是1万、10万、100万的呢?
1 楼 sunjun89 2013-10-16  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]
[/list][/img][/url][/flash]

相关推荐

    PHP编写的分页函数

    用PHP编写的分页函数,配合bootstrap的css文件,分页会更好看

    海量数据库的查询优化及分页算法方案

    此外,我们还可以使用ROW_NUMBER()函数算法来实现数据分页。该算法可以将大量数据分割成多个小的数据块,以提高查询效率和减少数据传输量。例如,我们可以使用以下语句来实现数据分页: ``` WITH temp AS ( SELECT ...

    动态分页算法java代码

    1. 数据库层面优化:在数据库查询时,可以使用LIMIT和OFFSET关键字(MySQL)或者ROW_NUMBER()函数(SQL Server)进行分页查询,避免加载全部数据。 2. 缓存:对于不常变动的数据,可以考虑使用缓存(如Redis)存储...

    高效struts分页算法

    在`PageBean`的构造函数中,可以计算出初始的分页信息。例如,当用户访问第一页时,可以根据`totalRows`和`pageRecorders`计算`totalPages`。如果`totalRows`能被`pageRecorders`整除,那么`totalPages`等于`...

    mysql_海量数据库的查询优化及分页算法方案.doc

    MySQL 海量数据库的查询优化及分页算法方案 在大规模数据库中,查询优化和分页算法是两个非常重要的方面。本文将详细介绍 MySQL 海量数据库的查询优化和分页算法方案。 一、查询优化 查询优化是指通过调整查询...

    分页算法 AspNetPager 分页实例 分页sql语句

    1. **基于RowNum的分页**:在SQL Server中,可以使用ROW_NUMBER()函数结合OVER子句实现分页。通过设置PARTITION BY和ORDER BY,确定每一页的数据顺序,并通过WHERE子句筛选出指定范围的行。 2. **基于Limit的分页**...

    JAVA大数据分页算法

    2. **RowNumber/Rank函数**:在某些数据库系统中,如SQL Server和Oracle,可以使用行号函数(如`ROW_NUMBER()`,`RANK()`,`DENSE_RANK()`)配合窗口函数进行分页,这样可以避免`OFFSET`的效率问题。 3. **分页缓存...

    分页算法 c语言代码

    根据提供的标题、描述以及部分代码内容,我们可以总结出以下关于分页算法的知识点: ### 分页算法概述 分页算法是计算机科学中的一个重要概念,在Web开发中尤其常见。它的主要目的是将大量的数据按照一定的规则...

    分页算法java实现

    ### 分页算法在Java中的实现解析 #### 引言 分页是数据处理中的一个常见需求,尤其是在Web应用中,为了提升用户体验和减轻服务器压力,将大量数据分批展示是必要的。本文将深入分析一段Java代码,该代码实现了分页...

    DREAMWEAVER的分页算法ASP

    ### DREAMWEAVER的分页算法ASP #### 背景介绍 Dreamweaver是一款由Adobe公司开发的专业网页设计工具,它可以帮助开发者快速构建、编辑以及管理网站内容。随着互联网的发展,数据量逐渐增大,如何高效地展示大量...

    请求分页系统的页面置换算法

    【请求分页系统页面置换算法】是操作系统中虚拟存储管理的重要组成部分,用于处理因物理内存不足而需要将页面调出到磁盘上的情况。实验报告的主题聚焦于利用Vc++编程实现三种常见的页面置换算法:Optimal(最优)、...

    课程设计:通用请求分页调度算法演示程序.doc

    例如,在C++实现FIFO算法时,可以定义一个队列结构来存储页面,并在`FIFO()`函数中进行具体操作,如插入新页面、检查是否缺页、淘汰最旧页面等。在实际编程时,需要考虑如何记录页面的到达时间或访问状态,以便正确...

    请求分页系统页面淘汰算法

    ### 请求分页系统页面淘汰算法 #### 一、实验背景及目标 在现代计算机系统中,内存管理和虚拟存储技术是操作系统的重要组成部分。其中,请求分页系统是一种常用的虚拟存储技术,它允许进程只将部分页面加载到物理...

    sqlserver 存储过程分页(支持千万级)算法研究

    第三种方法是使用MAX函数结合TOP语句来实现分页。这种方法的关键在于,通过递归地查找当前页之前的最大ID值,然后基于这个值进行筛选,获取当前页的数据。 #### 实现细节: 1. **计算前一页最大ID**:通过`SELECT ...

    WAMP架构记录分页算法研究.pdf

    WAMP架构记录分页算法研究 一、WAMP架构概述 WAMP架构是一种开源、免费、跨平台的组合,主要由Windows、Apache、MySQL和PHP四部分组成。这种架构的核心功能是通过PHP脚本语言来存取MySQL数据库或直接与操作系统...

Global site tag (gtag.js) - Google Analytics