用javabean来实现MySQL的分页显示
今天写了个 MySQL 分页的 javabean,是用 MySQL 里的 LIMIT 来实现的. sql = "SELECT * FROM Test LIMIT 5, 10"; 这句话的意思就是从第五条记录开始往下读 10 条记录出来,这个 bean 没有连接数据库的功能, 你可以使用自己的类来链接数据库,当然可以用我那个
今天写了个 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 ===================================
"+bar+" | |
=========================== 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 += " 首页 ";
else str += " 首页 ";
if(prev >= 0)
str += " 前页 ";
else str += " 前页 ";
if(next str += " 后页 ";
else str += " 后页 ";
if(TPages != 0 && CPages str += " 尾页";
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;
}
}

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

Redis 使用單線程架構,以提供高性能、簡單性和一致性。它利用 I/O 多路復用、事件循環、非阻塞 I/O 和共享內存來提高並發性,但同時存在並發性受限、單點故障和不適合寫密集型工作負載的局限性。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

直接從數據庫中恢復被刪除的行通常是不可能的,除非有備份或事務回滾機制。關鍵點:事務回滾:在事務未提交前執行ROLLBACK可恢復數據。備份:定期備份數據庫可用於快速恢復數據。數據庫快照:可創建數據庫只讀副本,在數據誤刪後恢復數據。慎用DELETE語句:仔細檢查條件,避免誤刪數據。使用WHERE子句:明確指定要刪除的數據。使用測試環境:在執行DELETE操作前進行測試。
