帮忙看看这个分页有没有BUG?

周口店的程序猿 2008-01-09 10:37:09

MSSQL mssql = new MSSQL();
Connection conn = mssql.getConn();

boolean isDesc = true;//是否倒序
int nRsCount = 0;//总记录数
int nPageCount = 0;//总页数
int nCurrentPage = 1;//当前页数
int nRsPage = 10;//每页记录数

//默认为顺序排列
String orderA = "asc";
String orderB = "desc";
if(isDesc){
orderA = "desc";
orderB = "asc";
}

if( null != request.getParameter("page") ){
nCurrentPage = Integer.parseInt(request.getParameter("page"));
}

PreparedStatement pstmt = conn.prepareStatement("select count(*) from employee");
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
nRsCount = Integer.parseInt(rs.getString(1));
}

nPageCount = nRsCount / nRsPage ;
int mark = nRsCount % nRsPage;

if( mark > 0){
nPageCount++;
}
if( nCurrentPage > nPageCount){
nCurrentPage = nPageCount;
}

String sql = "select * from (select top "+ nRsPage +" * from (select top "+ nCurrentPage*nRsPage +" * from (select emp_id,fname,hire_date from employee) a order by 3 "+ orderA +" ) b order by 3 "+ orderB +") c order by 3 "+ orderA +"";
if( nCurrentPage == nPageCount){ //最后一页
int nEnd = nRsCount - (nPageCount-1)*nRsPage;
sql = "select * from (select top "+ nEnd +" * from (select top "+ nCurrentPage*nRsPage +" * from (select emp_id,fname,hire_date from employee) a order by 3 "+ orderA +" ) b order by 3 "+ orderB +") c order by 3 "+ orderA +"";
}

pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()){
out.println(rs.getString(1)+"<br>");
}
%>

总共 <%=nPageCount%> 页
<%
for(int i=1;i<=nPageCount;i++){
%>
<a href="index.jsp?page=<%=i%>"><%=i%></a>
<% } %>
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2008-01-09
  • 打赏
  • 举报
回复
封装起来
shili150 2008-01-09
  • 打赏
  • 举报
回复
好帖
收藏了
xiangfeng616 2008-01-09
  • 打赏
  • 举报
回复
运行一下不就知道了吗!
  • 打赏
  • 举报
回复
没人鸟我?

这个分页很简洁的

如果没有错 那就大家学习学习 呵呵

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧