分页技术算法详解
解决中文乱码:
res.setCharacterEncoding("gbk");
PrintWriter pw=res.getWriter();
res.setCharacterEncoding("gbk");
PrintWriter pw=res.getWriter();
变量定义:
int pageSize=3:每页显示多少条记录
int pageNow=1:希望显示第几页(用户选择)
int pageCount=0:一共有多少页
int rowCount=0:一共有多少条记录
int pageSize=3:每页显示多少条记录
int pageNow=1:希望显示第几页(用户选择)
int pageCount=0:一共有多少页
int rowCount=0:一共有多少条记录
Class.forName();
ct=DriverManager.getConnection();
ps=ct.prepareStatement("SELECT COUNT(*) FROM 表名");
rs=ps.executeQuery();
if(rs.next()){
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
ps=ct.prepareStatement("SELECT 字段名列表 FROM 表名 LIMIT "+pageSize*(pageNow-1)+","+pageSize+"");
//ps.setInt(2,pageSize);
ct=DriverManager.getConnection();
ps=ct.prepareStatement("SELECT COUNT(*) FROM 表名");
rs=ps.executeQuery();
if(rs.next()){
rowCount=rs.getInt(1);
}
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
ps=ct.prepareStatement("SELECT 字段名列表 FROM 表名 LIMIT "+pageSize*(pageNow-1)+","+pageSize+"");
//ps.setInt(2,pageSize);
rs=ps.executeQuery();
pw.println("<table border=1>");
pw.println("<tr><th></th><th></th></tr>");
while(rs.next()){
pw.println("<tr>")
pw.println("<td>"+rs.getInt(1)+"</td>")
pw.println("</tr>");
}
pw.println("</table>");
pw.println("<table border=1>");
pw.println("<tr><th></th><th></th></tr>");
while(rs.next()){
pw.println("<tr>")
pw.println("<td>"+rs.getInt(1)+"</td>")
pw.println("</tr>");
}
pw.println("</table>");
MySql数据库:
【SELECT 字段名列表 FROM 表名 LIMIT pageSize*(pageNow-1),pageSize】
【SELECT 字段名列表 FROM 表名 LIMIT pageSize*(pageNow-1),pageSize】
SQLServer数据库:
【select top pageSize * from users where id not in
(select top pageSize*(pageNow-1) id from 表名)】
【select top pageSize * from users where id not in
(select top pageSize*(pageNow-1) id from 表名)】
如果当前页面不是第一页就显示上一页
if(pageNow!=1)
上一页
for(int pageNum=pageNow;pageNum<pageCount;pageNum++)
if(pageNow!=1)
上一页
for(int pageNum=pageNow;pageNum<pageCount;pageNum++)