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

2014-11-24 14:13:53 · 作者: · 浏览: 0
Mysql和Oracle 数据库中的分页查询
方法一:my sql数据库分页
<%
//定义每一页显示的记录
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<=0)
{
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();
%>
<%= rs.getString("title") %>//只显示每一个记录的title
首页<%=1 %> 共<%=totalPage %>页  第<%=pageNo %>页 末页<%=totalPage %>
jsp pageNo=<%=pageNo-1 %>"> 上一页  
方式二:可以选择的显示:可以实现页面的跳转
方式三:可以直接进行页面的查找:
//提交到当前页面
/>
方法二: Oracle数据库下的分页操作

分页查询

<%
//连接数据库,加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","tiger");
Statement sm = ct.createStatement();
//总共有多少页
int pageCount = 0;
//总共有多少行记录
int rowCount = 0;
//每页有3行记录
int pageSize = 3;
//接收pageNow
String s_pageNow = (String)request.getParameter("pageNow");
//当前在第一页
int pageNow = 1;
if(s_pageNow != null)
{
//把s_pageNow转化为数值型
pageNow = Integer.parseInt(s_pageNow);
}
//查询表中共有多少条记录
ResultSet rs = sm.executeQuery("select count(*) from emp");
if(rs.next())
{
rowCount = rs.getInt(1);
//如果整除就是商,否则就是商加上1 可以用三元表达式代替 rowCount%pageSize==0 ? rowCount/pageSize : rowCount/pageSize +1
if(rowCount%pageSize == 0)
{
pageCount = rowCount/pageSize;
}
else
{
pageCount = rowCount/pageSize +1;
}
}
//执行分页查询
rs = sm.executeQuery
("select * from (select a1.*,rownum rn from(select * from emp) a1 where rownum<="+pageNow*pageSize+")where rn>="+((pageNow-1)*pageSize+1)+" ");
while(rs.next())
{
out.println("
");
out.println("
");
姓名 薪水
"+rs.getString(2)+"