1. 程式人生 > >利用結果集進行分頁

利用結果集進行分頁

dex ges != 傳遞 from ont 鏈接 建數據庫 value

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>
 
技術分享

利用結果集進行分頁