javabean 来实现 MySQL 的分页



javabean 来实现 MySQL 的分页。今天写了个 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” />
<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>
<% } %>
</table>
</body>
</html>

=========================== pagequery.java ===================================
package dbclass;

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();    
  
 
 /

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;
 }

}

http://blog.sina.com.cn/s/blog_623200980100ie0h.html