搜索这个标题找到一篇文章:
适用所有使用jdbc结合sqlserver的javaWeb工程的分页查询共通操作代码
http://alexlsg.iteye.com/blog/700015
看了之后,试运行了一下。发现不可以用。
原因:row_number()是sql2005及以后版本的函数。而sql2000是没有的。
故此重新梳理了一下。
1、分页查询时需要用到的分页信息实体类
import java.io.Serializable;
/**
* 适用于所有的使用jdbc结合sqlserver的web工程
*
*
* @author ycglei886
*/
public class PageInfo implements Serializable {
private static final long serialVersionUID = 7126509565385142115L;
/**
* 记录总数(该属性由PageSearchUtil设置)
*
*/
private int recordCount;
/**
* 每页面最大记录数(该属性在传入PageSearchUtil的getPageResultSet方法之前需要设置)
*
*/
private int pageSize;
/**
* 总页数(该属性由本类的compute方法计算得出)
*
*/
private int pageCount;
/**
* 每部分页数(假如总共有100页,那么我们不可能将100页的页码都显示在页面上,只能部分部分的显示,该属性就是设置部分显示多少页的)
* 该属性与compute方法无关,在PageSearchUtil中也不会用到,但我们在页面上会用到
*/
private int partPageCount = 10;
/**
* 当前是第几页(该属性在传入PageSearchUtil的getPageResultSet方法之前需要设置)
*
*/
private int currentPage;
/**
* 开始记录数(该属性由本类的compute方法计算得出)
*
*/
private int startRecord;
/**
* 结束记录数(该属性由本类的compute方法计算得出)
*
*/
private int endRecrod;
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getEndRecrod() {
return endRecrod;
}
public int getPageCount() {
return pageCount;
}
public int getPartPageCount() {
return partPageCount;
}
public void setPartPageCount(int partPageCount) {
this.partPageCount = partPageCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getStartRecord() {
return startRecord;
}
public PageInfo() {
}
/**
* 通过recordCount、pageSize、currentPage三个属性值来计算本对象中所有属性的值
*
*
*/
public void compute() {
if (recordCount == 0 || pageSize == 0) {
pageCount = 0;
startRecord = 0;
endRecrod = 0;
currentPage = 0;
} else {
pageCount = (recordCount + pageSize - 1) / pageSize;
if (currentPage <= 0) {
currentPage = 1;
}
if (currentPage > pageCount) {
currentPage = pageCount;
}
startRecord = (currentPage - 1) * pageSize + 1;
int endRecrodTemp = startRecord + pageSize - 1;
if (endRecrodTemp <= recordCount) {
endRecrod = endRecrodTemp;
} else {
endRecrod = recordCount;
}
}
}
}
2、分页查询共通操作类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
/**
* 分页查询共通操作类 分页查询的思路是每页的数据分别进行查询,而不是将全部数据查询出来之后再分页
*
* @author ycglei886
* 创建时间:2010/5/20
* @version 1.0
*/