bitsCN.com

Mysql和Oracle数据库中的分页查询

方法一:mysql数据库分页

//定义每一页显示的记录

int pageSize = 3;

String strPageNo = request.getParameter("pageNo");

//记录当前页面

int pageNo;

//如果传入的当前页码为空,停留在第一页

if(strPageNo == null || strPageNo.equals(""))

{

pageNo = 1;

}

else

{

try

//把传进来的字符串转化成数字

{

pageNo = Integer.parseInt(strPageNo.trim());

}

catch(NumberFormatException e)

{

pageNo = 1;

}

//如果页码小于或者等于0停留在第一页

if(pageNo

{

pageNo=1;

}

}

//连接数据库

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection

("jdbc:mysql://localhost/bbs?user=root&password=mingming");

Statement stCount = conn.createStatement();

ResultSet rsCount = stCount.executeQuery

("select count(*) from article where pid=0");//查询共有多少个根节点

rsCount.next();

int totalRecord = rsCount.getInt(1); //拿到所有的子节点,计算出总共有多少条记录

// 第一种方法 计算得到总的页数,如果能被整数,页数就是商,否则就是商+1

int totalPage =

totalRecord%pageSize==0 ? totalRecord/pageSize : totalRecord/pageSize +1;

//第二种方法 计算得到总的页数,在 总记录上+加一个pageSize然后减去1除页面的大小pageSize,取商

int totalRecords = rsCount.getInt(1);

totalPages = (totalRecords + PAGE_SIZE - 1)/PAGE_SIZE;

//如果当前页码大于总的页数,停在最后一页

if(pageNo>totalPage)

{

pageNo = totalPage;

}

//计算每一次分页时 的起始位置,注意起始是从0开始;

int startPos = (pageNo-1)*pageSize;

Statement st = conn.createStatement();

//进行分页查询,startPos是每一次分页的起始位置; pageSize是这一页要显示记录的大小

ResultSet rs = st.executeQuery

("select * from article where pid =0 order by pdate desc limit "+startPos+","+pageSize);

%>

分页后在页面的不同的显示方式:

方式一:在一个table中正常的显示:

while(rs.next()){

%>

}

//关闭流

rs.close();

st.close();

conn.close();

%>

//只显示每一个记录的title

首页 共页 第页 末页

上一页

下一页

方式二:可以选择的显示:可以实现页面的跳转

方式三:可以直接进行页面的查找:

//提交到当前页面

方法二:Oracle数据库下的分页操作

bitsCN.com
09-18 22:09