方法一: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<=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);//拿到所有的子节点,计算出总共有多少条记录 // 第一种方法 计算得到总的页数,如果能被整数,页数就是商,否则就是商+1int 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 desclimit"+startPos+","+pageSize);%> 分页后在页面的不同的显示方式: 方式一:在一个table中正常的显示: <table border="1"><%while(rs.next()){%><tr><td><%= rs.getString("title") %>//只显示每一个记录的title</td></tr><%}//关闭流rs.close();st.close();conn.close();%></table>首页<%=1 %> 共<%=totalPage %>页 第<%=pageNo %>页 末页<%=totalPage %><a href="ShowArticleFlat.jsp?pageNo=<%=pageNo-1 %>"> 上一页 </a> <a href="ShowArticleFlat.jsp?pageNo=<%=pageNo+1 %>"> 下一页 </a> 方式二:可以选择的显示:可以实现页面的跳转 <form name="form1"><select name="pageNo"onchange="document.form1.submit()"><%for(int i = 1;i<=totalPage;i++){%><option value=<%=i %> <%= pageNo==i?"selected":""%>>第<%=i %>页<%}%></select></form> 方式三:可以直接进行页面的查找: //提交到当前页面<form name="fom2" action="ShowArticleFlat.jsp"><inputtype=text size=4 name="pageNo"value=<%=pageNo%>/><input type="submit" value="go" /></form> 方法二:Oracle数据库下的分页操作 <body><h2>分页查询</h2><table><tr><td>姓名</td><td>薪水</td></tr><%//连接数据库,加载驱动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;//接收pageNowString 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 +1if(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("<tr>");out.println("<td>"+rs.getString(2)+"</td>");out.println("<td>"+rs.getString(6)+"</td>");out.println("</tr>");}//输出每一页要查找的连接for(int i=1; i<=pageCount; i++){out.print("<a href=fenye.jsp?pageNow="+i+">["+i+"]<a>");}%></table></body>更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12MongoDB基于GridFS实现文件的分布式存储PL/SQL中的procedure和function编程相关资讯 Oracle分页查询 MySQL分页查询 数据库分页查询
- Oracle、MySQL和SQL Serve分页查询 (05月10日)
- 关于Oracle分页查询 (01/21/2013 09:52:21)
| - Oracle存储过程分页查询 (03/28/2013 06:37:39)
- 探究Oracle分页查询 (08/20/2012 10:31:11)
|
本文评论 查看全部评论 (0)