参考jive的iterator模式
简单的说就是先去出总纪录数,然后计算当前游标的位置:根据不同的数据库的特点:采用不同的实现方式:例如mysql采用limit(start, end)等等,不能采用的则采用ResultSet.absolute()
再取出end-start条纪录。
解决方案 »
- org.apache.jasper.JasperException: Cannot find any information on property 'qpag
- jdk1.5和tomcat4的问题
- 救命啊,哪位高手能给出完整易懂的代码啊?
- 招聘:JAVA程序员,地区不限
- 请教关于检索问题
- jsp中能不能得到div中的value值,不用js
- 很简单的jsp 中一个莫名其妙的错误,可能还是 == 和 equals 的问题。
- 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
- jsp小问题(在线等待)
- jsp调用java bean的问题
- 关于分页的问题
- 在JSP中实现分页显示RS数据啊?
还是按 joachimz(joachimz) 所说的方法最好。例如:在‘下一页’的连接里带上每页显示的记录数,当前是第几页(a.jsp?EachPageCount=20&CurrentPage=2........),然后在javabean里计算。例如:
.............
int lEndRow,lStartRow;
lStartRow = (CurrPageNo -1) * EachPageCount + 1 ;
lEndRow = lStartRow + EachPageCount -1;
String lSql = "select a.* from (select test.*, rownum rn from test where rownum<="+lEndRow+") a where rn>="+lStartRow;Statement lST=this.conn.createStatement();
ResultSet lRS = lST.executeQuery(lSql);
............上面的代码只是随便的举个例子,具体得看着办。
import java.util.*;/**
* Title:分页
* Description:
* Copyright: Copyright (c) 2004
* Company:
* author:颜喜班
* @version 1.0
*/
public class SplitPager
{
/*
* _sql_str:传入的sql语句
* _total_records: 总记录数目
* _pageSize: 每页显示的记录数目
* _page: 所分的逻辑页数
*/
private Connection con=null;
private Statement stmt=null;
private ResultSet rs=null;
private ResultSetMetaData rsmd=null;
private String _sql_str;
private int _total_records;
private int _pages;
private int _pagesize;
public void setConnection(Connection con)
{
this.con=con;
if (this.con == null)
System.out.println("Failure to get a connection!");
else
System.out.println("Success to get a connection!");
}
public void initialize(String sqlStr,int pageSize)
{
this._sql_str=sqlStr;
this._pagesize=pageSize;
try{
stmt=this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(this._sql_str);
rsmd=rs.getMetaData();
if (rs!=null)
{
rs.last();
this._total_records = rs.getRow();
rs.first();
this._pages = (this._total_records - 1) / this._pagesize + 1;
}
}
catch(SQLException e){System.out.println(e.toString()); }
}
public Vector getPage(int ipage){
Vector vData=new Vector();
int n=ipage;
int m=0;
m=(n-1)*this._pagesize+1;
try{
if (rs!=null)
{
rs.absolute(m);
for(int i=0;i<this._pagesize;i++){
String[] sData=new String[rsmd.getColumnCount()];
for(int j=0;j<rsmd.getColumnCount();j++)
{
sData[j]=rs.getString(j+1);
}
if (sData==null)
{
break;
}
vData.addElement(sData);
rs.next();
}
}
rs.close();
stmt.close();
}
catch(SQLException e){System.out.println(e.toString()); }
return vData;
}
public int getPages()
{
return this._pages;
}
public int getTotalRecords()
{
return this._total_records;
}}
jsp+javaBeanhttp://www.52free.com/bbs/index.php?act=ST&f=8&t=148&st=0#entry298如果数据库不同只需修改javaBean中的驱动即可,页面显示数可以自己控制。