前言 在使用数据库的过程中,不可避免的需要使用到分页的功能,可是JDBC 的规范对此却没有很好的解决
对于这个需求很多朋友都有自己的解决方案,比如使用Vector 等集合类先保存取出的数据再分页
但这种方法的可用性很差,与 JDBC 本身的接口完全不同,对不同类型的字段的支持也不好
这里提供了一种与 JDBC 兼容性非常好的方案
JDBC 和分页 Sun 的JDBC 规范的制定,有时很让人哭笑不得,在JDBC1
0 中,对于一个结果集(ResultSet)你甚至只能执行 next()操作,而无法让其向后滚动,这就直接导致在只执行一次SQL 查询的情况下无法获得结果集的大小
所以,如果你使用的是JDBC1
0 的驱动,那么是几乎无法实现分页的
好在Sun 的JDBC2 规范中很好的弥补了这一个不足,增加了结果集的前后滚动操作,虽然仍然不能直接支持分页,但我们已经可以在这个基础上写出自己的可支持分页的ResultSet了
和具体数据库相关的实现方法 有一些数据库,如 Mysql, Oracle 等有自己的分页方法,比如 Mysql 可以使用limit 子句,Oracle 可以使用ROWNUM 来限制结果集的大小和起始位置
这里以 Mysql 为例,其典型代码如下: // 计算总的记录条数 String SQL = "SELECT Count(*) AS total " + this
QueryPart; rs = db
executeQuery(SQL); if (rs
next()) Total = rs
getInt(1); // 设置当前页数和总页数 TPages = (int)Math
ceil((double)this
Total/this
MaxLine); CPages = (int)Math
floor((double)Offset/this
MaxLin