• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        用 javabean 來完成 MySQL 的分頁顯示

        用 javabean 來完成 MySQL 的分頁顯示

        更新時間:2022-05-03 文章作者:未知 信息來源:網絡 閱讀次數:

        用 javabean 來實現 MySQL 的分頁顯示

        ●○●○●○●○●○●○●○●○●○●○●○●○●○●○
        ○作者:劉湛日期:2000-02-04jeru@163.net●
        ●http://www.cyberlabs.com/~jeru/ ○
        ○歡迎訪問爪哇人,獲取更多資料●
        ●○●○●○●○●○●○●○●○●○●○●○●○●○●○

        今天寫了個 MySQL 分頁的 javabean,是用 MySQL 里的 LIMIT 來實現的.
        sql = "SELECT * FROM Test LIMIT 5, 10";
        這句話的意思就是從第五條記錄開始往下讀 10 條記錄出來,這個 bean 沒有連接數據庫的功能,
        你可以使用自己的類來鏈接數據庫,當然可以用我那個寫的很爛的 dbClass.java 來連,^_^

        這里給出三個程序的源代碼。
        dbClass.java -- 用來連接 MySQL 數據庫。

        PageQuery.java -- 重寫了 dbClass 返回的 ResultSet,使其具備分頁功能。

        example.jsp -- jsp 文件,可以看到,我只用了兩行就實現了分頁的功能,當然,
        sql 語句是不鼓勵直接寫在 jsp 里的,這里為了讓大家看清楚,所以這么做了。

        自知水平不高,只想拋磚引玉,有什么錯漏之處還望高手指出。

        =========================== example.jsp ===================================
        <%@ page language="java" import="java.sql.*, dbclass.*" %>
        <%@ page contentType="text/html; charset=gb2312" %>
        <jsp:useBean id="pq" scope="page" class="dbclass.PageQuery" />
        <html>

        <body bgcolor="#8BA9C9">
        <table bgcolor="#fecda9" cellspacing=0>
        <%

        String query = "SELECT * FROM systempass"; // 注意這個" FROM "一定要大寫 
        ResultSet rs = pq.myQuery(query, request);
        String bar = pq.PageLegend();//讀取分頁提示欄

        out.println("<tr><td colspan=2>"+bar+"</td></tr>");
        out.println("<tr><td colspan=2><hr size=1 color=blue></td></tr>");
        while (rs.next()){ %>
        <tr><td><%=rs.getString(9)%></td><td><%=rs.getString(10)%></td></tr>
        <% } %>

        </body>
        </html>

        =========================== PageQuery.java ===================================
        package dbclass;
        /**
        * PageQuery v 1.0
        * 這個類原名叫 TViewPage ,作者 sharetop ,用 php 寫的。
        * 同事 Macro 曾用 PHP 改寫過這個類,添加了不少功能。
        * 我感覺封裝的很好,使用十分方便,使用 JSP 后,便有了
        * 想法用 JSP 來改寫,這次為了簡明起見,我省去了很多功能,
        * 盡量讓它好讀,以后有空添加更多的功能,
        *
        * Mender :
        * Jeru Liu
        * Homepage :
        * http://www.cyberlabs.com/~jeru/
        * Email: jeru@163.net
        *
        * 本類沒有提供連接數據庫的功能,所以需在外部打開相應的數據庫。
        * 需在外部自定義數據顯示格式。
        */

        import java.util.*;
        import java.sql.*;
        import java.io.*;
        import javax.servlet.*;
        import javax.servlet.http.*;

        public class PageQuery{ 

        int Offset; // 記錄偏移量
        int Total; // 記錄總數

        int MaxLine; // 記錄每頁顯示記錄數
        ResultSet rs; // 讀出的結果

        int TPages; // 總頁數
        int CPages; // 當前頁數

        String PageQuery; // 分頁顯示要傳遞的參數
        String Query; // query 語句
        String QueryPart; // " FROM " 以后的 query 部分

        String FilePath;

        dbClass db;// object of dbclass

        //constructer do nothing
        public PageQuery() {
        // 每頁顯示十行
        MaxLine = 10;
        db = new dbClass();
        }

        //********讀取記錄***************
        // 主要工作函數,根據所給的條件從表中讀取相應的記錄 

        public ResultSet myQuery(String query, HttpServletRequest req) throws SQLException {

        String query_part, os;
        int begin, offset;

        // 截取 " FROM " 以后的 query 語句
        begin = query.indexOf(" FROM ");
        query_part = query.substring(begin, query.length()).trim();

        // 計算偏移量
        os = req.getParameter("offset");
        if (os == null) Offset = 0;
        else Offset = Integer.parseInt(os);

        // 獲取文件名
        FilePath = req.getRequestURI();

        Query = query;
        QueryPart = query_part;

        // 計算總的記錄條數
        String SQL = "SELECT Count(*) AS total " + this.QueryPart;
        rs = db.executeQuery(SQL);
        if (rs.next())
        Total = rs.getInt(1); 

        // 設置當前頁數和總頁數
        TPages = (int)Math.ceil((double)this.Total/this.MaxLine);
        CPages = (int)Math.floor((double)Offset/this.MaxLine+1);

        // 根據條件判斷,取出所需記錄
        if (Total > 0) {
        SQL = Query + " LIMIT " + Offset + " , " + MaxLine;
        rs = db.executeQuery(SQL); 
        }
        return rs;
        }

        // 顯示總頁數
        public int getTotalPages() {
        return TPages;
        }

        //顯示當前所在頁數
        public int getCurrenPages() {
        return CPages;
        }

        //**********顯示翻頁提示欄*************
        // 顯示首頁、下頁、上頁、尾頁
        // 你可以改成你喜歡的樣式
        public String PageLegend() {

        String str = "";
        int first, next, prev, last;
        first = 0;
        next = Offset + MaxLine;
        prev = Offset - MaxLine;
        last = (this.TPages - 1) * MaxLine;

        if(Offset >= MaxLine)
        str +=" <A href=" + FilePath + "?offset=" + first + ">首頁</A> ";
        else str += " 首頁 ";
        if(prev >= 0)
        str +=" <A href=" + FilePath + "?offset=" + prev + ">前頁</A> ";
        else str += " 前頁 ";
        if(next < Total)
        str +=" <A href=" + FilePath + "?offset=" + next + ">后頁</A> ";
        else str += " 后頁 ";
        if(TPages != 0 && CPages < TPages)
        str +=" <A href=" + FilePath + "?offset=" + last + ">尾頁</A>";
        else str += " 尾頁 ";

        str += " 頁次:" + getCurrenPages() + "/" + getTotalPages() + "頁 ";
        str += MaxLine + "條/頁 " + "共" + Total + "條";
        return str;
        }
        }

        =========================== dbClass.java ===================================
        /**
        * a class use to connect the MySQL database and do some query
        * use mm.MySQL.Drive
        * Jeru Liu ,November 2, 2000 , ver - 1.1
        *
        */

        package dbclass;
        import java.sql.*;

        public class dbClass{

        // public: connection parameters
        String dbName = "Kernel";
        String Login = "root";
        String Password = "MySQL";

        String DBDriver = "org.gjt.mm.MySQL.Driver";
        String ConnStr = "jdbc:MySQL://localhost/"+dbName+"?user="+Login+";password="+Password;
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        ResultSetMetaData resultsMeta =null;
        int rows = 0;

        // public: constructor to load driver and connect db
        public dbClass(){ 
        // load mm.MySQL.driver
        try

        Class.forName("org.gjt.mm.MySQL.Driver"); 
        }
        // display corresponding error message when onload error occur
        catch (java.lang.ClassNotFoundException e)
        {
        System.out.println("Class not found exception occur. Message is:");
        System.out.println(e.getMessage());
        }

        // establish connection to the database throught driver
        try

        con = DriverManager.getConnection(ConnStr);
        }
        // display sql error message
        catch (SQLException e)
        {
        System.out.print("SQL Exception occur. Message is:");
        System.out.print(e.getMessage()); 
        }

         

        // perform a query with records returned
        public ResultSet executeQuery(String sql)throws SQLException


        ResultSet rs = null;
        try
        {
        stmt = con.createStatement();
        rs = stmt.executeQuery(sql);
        while(rs.next())
        this.rows ++; 
        rs = stmt.executeQuery(sql);
        }
        catch (SQLException e)
        {
        System.out.print("Query:"+e.getMessage());
        }

        this.rs = rs;
        return rs;
        }

        // perform a query without records returned
        public boolean executeUpdate(String sql)

        try
        {
        stmt = con.createStatement();
        stmt.executeUpdate(sql);
        return true;
        }
        catch(SQLException e)
        {
        System.out.print("Update:"+e.getMessage());
        return false;
        }
        }

        // return the num of columns
        public int getColumns()
        {
         int columns = 0;
         try
         {
        this.resultsMeta = this.rs.getMetaData();
        columns = this.resultsMeta.getColumnCount();
         }
         catch (SQLException e){}
         return columns;
        }

        // return the num of rows
        public int getRows()
        {
         return this.rows;
        }

        public String getDBName() {
        return this.dbName;
        }

        }

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 国内成人精品亚洲日本语音 | 亚洲免费二区三区| 国产亚洲一区二区三区在线不卡| 亚洲欧美在线x视频| 精品免费国产一区二区三区| 国内精品久久久久影院亚洲| 大地资源免费更新在线播放| 激情内射亚洲一区二区三区爱妻| 无码专区一va亚洲v专区在线| 国产亚洲国产bv网站在线| 美女视频黄的全免费视频网站| 成人免费视频一区二区三区| 亚洲三级在线免费观看| 99久久久国产精品免费无卡顿| 亚洲国产成人99精品激情在线| 69成人免费视频无码专区| 亚洲精品乱码久久久久蜜桃 | 污视频网站在线免费看| 免费一区二区三区四区五区| 一级毛片a女人刺激视频免费| 亚洲免费人成在线视频观看| 亚洲国产综合AV在线观看| 国产成人免费网站在线观看| 麻豆69堂免费视频| 国产精品亚洲一区二区三区在线| 亚洲国产成人精品无码区二本| 四只虎免费永久观看| aa级毛片毛片免费观看久| 91亚洲va在线天线va天堂va国产| 真人做人试看60分钟免费视频| 亚洲av永久无码精品网址| 成人免费视频网址| 久久久久久久久久免免费精品| 亚洲精品免费在线观看| 午夜免费福利在线观看| jizz免费在线观看| 亚洲依依成人精品| 亚洲一区视频在线播放 | 亚洲av无码专区首页| 亚洲精品自产拍在线观看| 亚洲视频免费一区|