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

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

        用 javabean 來(lái)完成 MySQL 的分頁(yè)顯示

        用 javabean 來(lái)完成 MySQL 的分頁(yè)顯示

        更新時(shí)間:2022-05-03 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

        用 javabean 來(lái)實(shí)現(xiàn) MySQL 的分頁(yè)顯示

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

        今天寫了個(gè) MySQL 分頁(yè)的 javabean,是用 MySQL 里的 LIMIT 來(lái)實(shí)現(xiàn)的.
        sql = "SELECT * FROM Test LIMIT 5, 10";
        這句話的意思就是從第五條記錄開始往下讀 10 條記錄出來(lái),這個(gè) bean 沒(méi)有連接數(shù)據(jù)庫(kù)的功能,
        你可以使用自己的類來(lái)鏈接數(shù)據(jù)庫(kù),當(dāng)然可以用我那個(gè)寫的很爛的 dbClass.java 來(lái)連,^_^

        這里給出三個(gè)程序的源代碼。
        dbClass.java -- 用來(lái)連接 MySQL 數(shù)據(jù)庫(kù)。

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

        example.jsp -- jsp 文件,可以看到,我只用了兩行就實(shí)現(xiàn)了分頁(yè)的功能,當(dāng)然,
        sql 語(yǔ)句是不鼓勵(lì)直接寫在 jsp 里的,這里為了讓大家看清楚,所以這么做了。

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

        =========================== 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"; // 注意這個(gè)" FROM "一定要大寫 
        ResultSet rs = pq.myQuery(query, request);
        String bar = pq.PageLegend();//讀取分頁(yè)提示欄

        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
        * 這個(gè)類原名叫 TViewPage ,作者 sharetop ,用 php 寫的。
        * 同事 Macro 曾用 PHP 改寫過(guò)這個(gè)類,添加了不少功能。
        * 我感覺(jué)封裝的很好,使用十分方便,使用 JSP 后,便有了
        * 想法用 JSP 來(lái)改寫,這次為了簡(jiǎn)明起見,我省去了很多功能,
        * 盡量讓它好讀,以后有空添加更多的功能,
        *
        * Mender :
        * Jeru Liu
        * Homepage :
        * http://www.cyberlabs.com/~jeru/
        * Email: jeru@163.net
        *
        * 本類沒(méi)有提供連接數(shù)據(jù)庫(kù)的功能,所以需在外部打開相應(yīng)的數(shù)據(jù)庫(kù)。
        * 需在外部自定義數(shù)據(jù)顯示格式。
        */

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

        public class PageQuery{ 

        int Offset; // 記錄偏移量
        int Total; // 記錄總數(shù)

        int MaxLine; // 記錄每頁(yè)顯示記錄數(shù)
        ResultSet rs; // 讀出的結(jié)果

        int TPages; // 總頁(yè)數(shù)
        int CPages; // 當(dāng)前頁(yè)數(shù)

        String PageQuery; // 分頁(yè)顯示要傳遞的參數(shù)
        String Query; // query 語(yǔ)句
        String QueryPart; // " FROM " 以后的 query 部分

        String FilePath;

        dbClass db;// object of dbclass

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

        //********讀取記錄***************
        // 主要工作函數(shù),根據(jù)所給的條件從表中讀取相應(yīng)的記錄 

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

        String query_part, os;
        int begin, offset;

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

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

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

        Query = query;
        QueryPart = query_part;

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

        // 設(shè)置當(dāng)前頁(yè)數(shù)和總頁(yè)數(shù)
        TPages = (int)Math.ceil((double)this.Total/this.MaxLine);
        CPages = (int)Math.floor((double)Offset/this.MaxLine+1);

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

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

        //顯示當(dāng)前所在頁(yè)數(shù)
        public int getCurrenPages() {
        return CPages;
        }

        //**********顯示翻頁(yè)提示欄*************
        // 顯示首頁(yè)、下頁(yè)、上頁(yè)、尾頁(yè)
        // 你可以改成你喜歡的樣式
        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 + ">首頁(yè)</A> ";
        else str += " 首頁(yè) ";
        if(prev >= 0)
        str +=" <A href=" + FilePath + "?offset=" + prev + ">前頁(yè)</A> ";
        else str += " 前頁(yè) ";
        if(next < Total)
        str +=" <A href=" + FilePath + "?offset=" + next + ">后頁(yè)</A> ";
        else str += " 后頁(yè) ";
        if(TPages != 0 && CPages < TPages)
        str +=" <A href=" + FilePath + "?offset=" + last + ">尾頁(yè)</A>";
        else str += " 尾頁(yè) ";

        str += " 頁(yè)次:" + getCurrenPages() + "/" + getTotalPages() + "頁(yè) ";
        str += MaxLine + "條/頁(yè) " + "共" + 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;
        }

        }

        溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 野花高清在线观看免费完整版中文 | 久久综合九九亚洲一区| 野花视频在线官网免费1| 天天干在线免费视频| 亚洲国产系列一区二区三区| 精品福利一区二区三区免费视频| 亚洲黄色在线观看网站| 国产91免费视频| 色在线亚洲视频www| 在线不卡免费视频| 亚洲国产欧洲综合997久久| 日本免费高清一本视频| 国产精品久久亚洲一区二区| 免费中文字幕在线| aaa毛片免费观看| 亚洲国产精品lv| 97性无码区免费| 亚洲精品无码久久| 亚洲精品在线视频| 一个人免费视频观看在线www| 777亚洲精品乱码久久久久久 | 免费精品99久久国产综合精品| 亚洲欧洲日产国产综合网| 18勿入网站免费永久| 亚洲精品无码aⅴ中文字幕蜜桃| 免费一级毛片不卡在线播放| 黄色短视频免费看| 亚洲精品国产手机| 日韩在线免费看网站| 成人无码区免费A∨直播| 亚洲日本在线播放| 全部免费a级毛片| 日韩电影免费观看| 亚洲中文无码永久免费| 亚洲欧洲自拍拍偷精品 美利坚| 免费黄色电影在线观看| 亚洲av无码专区在线电影| 久久精品亚洲福利| 精品久久8x国产免费观看| 曰韩无码AV片免费播放不卡| 亚洲视频精品在线观看|