程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql和Oracle數據庫中的分頁查詢

Mysql和Oracle數據庫中的分頁查詢

編輯:MySQL綜合教程

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<=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中正常的顯示:   <table border="1"> <% while(rs.next()){ %> <tr> <td> <%= rs.getString("title") %>//只顯示每一個記錄的title </td> </tr> <% }                 //關閉流 rs.close(); st.close(); conn.close(); %> </table> 首頁<%=1 %>&nbsp;共<%=totalPage %>頁 &nbsp;第<%=pageNo %>頁&nbsp;末頁<%=totalPage %> <a href="ShowArticleFlat.jsp?pageNo=<%=pageNo-1 %>"> 上一頁 </a>&nbsp; <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"> <input type=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; //接收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("<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>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved