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