如何实现倒序分页的实现

zyx520ldn 2011-03-19 03:34:26
做了例子 分页的代码是这样 的
package com.tool;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import java.util.ArrayList;


public class PaginationBean {
private int pageSize=10;//每页显示的记录条数
private int pageNum=0;//总页数
private int pageId=1;//当前页码
private int size=0;//总记录条数
public ArrayList pagination(int pageId,String sql){
this.pageId=pageId;//把当前页码赋给属性pageId

ResultSet rs=null;//保存查询结果集
DBConnection dbcn=new DBConnection();
dbcn.connect();//取得连接
rs=dbcn.select(sql);//执行查询
try {
rs.last();//将记录移到最后一行
size=rs.getRow();//取得行号,其实就是总记录数
if(size%pageSize==0){
this.pageNum=size/pageSize;//计算总页数
}else{
this.pageNum=size/pageSize+1;//计算总页数
}
rs.beforeFirst(); //让记录游标返回第一条记录之前的位置
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}

if(this.pageId<1)this.pageId=1;//如果当前页码pageId小于1,就让它等于1
if(this.pageId>this.pageNum)this.pageId=this.pageNum;//如果当前页码pageId大于总页码pageNum,则让它等于总页码

for(int i=0;i<(this.pageId-1)*pageSize;i++){//此循环的功能用于将记录定位在当前页pageId之前的那条记录
try {
rs.next();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
ArrayList allData=new ArrayList();//allData集合用于保存当前页的数据



try {
ResultSetMetaData rsmd=rs.getMetaData();//rsmd是代表了列信息的一个对象
int colnum=rsmd.getColumnCount();//取得列数

for(int j=0;j<pageSize;j++){//此循环用于取得当前页的数据
ArrayList al=new ArrayList();//保存当前的行的数据
if(!rs.next()){
break;//如果每页显示4条,但记录只剩下3条,当再没有记录时,用break结束循环
}
for(int n=1;n<=colnum;n++){//往当前行al集合里添加行数据,即将这行的每一列数据添加进集合
al.add(rs.getString(n));
}
allData.add(al);//将每一行的数据又存进:保存所有的行的数据的集合里面

}
dbcn.connectionClose();
return allData;//把总数据返回
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}

}
public int getPageNum(){
return this.pageNum;
}
public int getSize(){
return this.size;
}
public int getPageId() {
return pageId;
}
}




jsp的页面是这样的
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@page import="com.javabean.UserInfo"%>
<%@page import="com.tool.PaginationBean"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<a href="add.jsp">增加</a>
<%
PaginationBean pnb=(PaginationBean)session.getAttribute("paginationbean");
List list=(List)session.getAttribute("listall");
if(list!=null&&list.size()>0){

%>

<table>
<tr><td>id</td><td>name</td><td>操作</td></tr>

<%
for(int i=0;i<list.size();i++){
List list2222=(List)list.get(i);

%>
<tr>
<td><%=list2222.get(0) %></td><td><%=list2222.get(1) %></td>
<td>
<a href="UserInfoAction.do?method=preupdate&id=<%=list2222.get(0) %>">编辑</a>
<a href="UserInfoAction.do?method=delete&id=<%=list2222.get(0) %>">删除</a>
</td>
</tr>
<%} %>
<tr ><td colspan=3 >
<a href="UserInfoAction.do?method=list&pageId=1">首页</a>
<a href="UserInfoAction.do?method=list&pageId=<%=pnb.getPageId()-1 %>">上一页</a>
<a href="UserInfoAction.do?method=list&pageId=<%=pnb.getPageId()+1 %>">下一页</a>
<a href="UserInfoAction.do?method=list&pageId=<%=pnb.getPageNum() %>">尾页</a>
一共有<%=pnb.getSize() %>条留言,当前页为<%=pnb.getPageId() %>/<%=pnb.getPageNum() %>页<br><br><br><br><br><br><br></td></tr>
</table>

<%} %>


</body>
</html>



查询出来的数据时正序的 怎么改让其显示为倒序 啊 ?比如查询出来是 如id是123456 怎么改成显示654321的倒序
...全文
144 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
llongfeng2008 2011-03-21
啥情况呀,分页都可以自己写了,oracle倒序不会,晕呀。偏科偏的有点太厉害
回复
hepeng_8 2011-03-21
sql语句变一下是不是就可以实现了
回复
zyx520ldn 2011-03-21
[Quote=引用 6 楼 adamliuhui 的回复:]
order by id desc
[/Quote]
xiexie
回复
_LiuHui 2011-03-19
order by id desc
回复
_LiuHui 2011-03-19
desc......
回复
qkniit 2011-03-19
[Quote=引用 2 楼 gray_sky 的回复:]
查询出来的数据时正序的 怎么改让其显示为倒序 啊 ?比如查询出来是 如id是123456 怎么改成显示654321的倒序 [/Quote]

后面加DESC啊
回复
zyx520ldn 2011-03-19
package com.tool;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection {
private final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String DBURL="jdbc:sqlserver://127.0.0.1:1439;DatabaseName=zyx";
private final String DBUSER="sa";
private final String DBPASSWORD="123456";
Connection conn=null;
ResultSet rs=null;
Statement st=null;
public void connect(){
try
{
Class.forName(DBDRIVER) ;
this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
}
catch (Exception e)
{e.printStackTrace();}
}
public ResultSet select(String sql){

try {
if(st==null){
st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}

rs=st.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return rs;
}
public int executeUpdate(String sql){
int i=0;
try {
if(st==null){
st = conn.createStatement();
}
i=st.executeUpdate(sql);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return i;


}
public void connectionClose(){
try {
if(rs!=null){
rs.close();
rs=null;
}
if(st!=null){
st.close();
st=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (Exception e) {
e.printStackTrace();
}

}

}


我是这样连接sql2005的 难道要重新写吗?
回复
Gray_Sky 2011-03-19
sql做desc排序就行了。。。
不知道你是不是这个意思
回复
zyx520ldn 2011-03-19
数据库是2005的
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2011-03-19 03:34
社区公告
暂无公告