利用结果集进行分页

Posted 有梦就能实现

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用结果集进行分页相关的知识,希望对你有一定的参考价值。

1.概述

数据的分页显示是Web程序的基本技术。通过简单的超链接就可以实现数据在页面上的分页显示。本实例是通过在页面上输入课程类型,查询该类型的所有数据,然后再分页显示。

 

2.技术要点

     本实例是使用结果集ResultSet将数据表中的记录全部加载到结果集中,然后利用结果集的absolute()方法跳转到指定的记录,作为本页的首记录。通过在链接的地址中附加参数传递当前应显示的页码。

 

3.具体实现

(1)创建数据库操作类,定义构造方法UserDao()加载数据库驱动,定义Connection()方法创建与数据库的连接,定义selectStatic()方法执行查询操作,定义closeConnection()方法关闭数据库。详细代码请参考源码,也可以查看实例“利用SQL语句实现分页”的实现过程。

(2)创建index.jsp页面。首先,通过JavaBean标签调用数据可靠操作类UserDao,并定义在分页输出数据中使用的参数。

技术分享
<%@page contentType="text/html" pageEncoding="GBK" import="java.sql.*,java.util.*,java.lang.*"%>
<jsp:useBean id="selectall" scope="page" class="com.pkh.dao.UserDao"></jsp:useBean>
<%!
      int CountPage = 0;
      int CurrPage = 1;
      int PageSize = 5;
      int CountRow = 0; 
%>
技术分享

然后,根据传递的参数获取当前显示的页码,执行查询结语句,获取到结果集并定位显示数据。

技术分享
<%
      String StrPage = (String) request.getParameter("Page");                    //获取当前页面
      if (StrPage == null) {
            CurrPage = 1;
      } else{
            CurrPage = Integer.parseInt(StrPage);
      }
      ResultSet Rs;                                                           //定义查询结果集变量
      String SQL;                                                      //定义SQL语句变量
      if (v != null && !v.equals("")) {
            SQL = "Select * From tb_ClassList Where CType=‘" + v + "‘";     //编写查询语句
      } else {
            SQL = "Select * From tb_ClassList";
      }
      Rs = selectall.selectStatic(SQL);                                       //执行查询语句
      Rs.last();
      int i = 0;
      CountRow = Rs.getRow();                                               //获取查询结果集中字段数
      CountPage = (CountRow / PageSize);                                       //计算数据可以分成几页
      if (CountRow % PageSize > 0)
            CountPage++;
      Rs.first();                                                                //获取第一条数据
      if (CountRow > 0) {
            Rs.absolute(CurrPage * PageSize - PageSize + 1);               //指定跳转页码
            while (i < PageSize && !Rs.isAfterLast()) {                 //循环输出数据
%>
<tr>
      <td align="center" nowrap bgcolor="#FFFFFF"><span class="style3"><%=Rs.getString("CID")%></span></td>
</tr>
<%
                  Rs.next();                                                    //执行下一条
                  i++;
            }
            selectall.closeConnection();                                        //关闭数据库
      }
%>
技术分享

最后,创建上一页、下一页和最后一页超级链接,链接到index.jsp页面,指定Page作为栏目标识,将页数作为参数值。关键代码如下:

技术分享
<tr>
      <td width="251" height="30">
           [<%=CurrPage%>/<%=CountPage%>] 每页5条 共<%=CountRow%>条记录                               
      </td>
      <td width="260"><div align="right">
<%
      if (CurrPage > 1) {
%>
      <a href="index.jsp?Page=<%=CurrPage - 1%>&Values=<%=v%>">上一页</a>
<% }    %>
<%
      if (CurrPage < CountPage) {
%>
      <a href="index.jsp?Page=<%=CurrPage + 1%>&Values=<%=v%>">下一页</a>
<% }    %>
      <a href="index.jsp?Page=<%=CountPage%>&Values=<%=v%>">最后一页</a></div>
      </td>
</tr>
 
技术分享

 

以上是关于利用结果集进行分页的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis中使用RowBounds对查询结果集进行分页

Jsp页面,结果集分页和sql(top)分页的性能对比

java在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException

如何在 django 会话中存储查询集以进行分页

基于Dapper的分页实现,支持筛选,排序,结果集总数,非存储过程

在 Django 中使用两个以不同方式格式化的查询集进行分页