準備工作:
在Oracle下,建立一張表:
CREATE TABLE mytable(id int, name varchar(32))
/
往表mytable裡插入一些值。
testpage.jsp頁面程式如下:
<!--
簡單的分頁樣本,demo
-->
<%@page import="java.util.*"%>
<%@page import="java.lang.*"%>
<%@page import="java.io.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.net.*"%>
<%@page contentType="text/html;charset=GBK" %>
<%
String sConn="jdbc:oracle:thin:@host:1521:orcl";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(sConn,"user","password");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Statement stmtcount=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery("select * from mytable");
//String sqlcount="select count(*) from mytable";
//ResultSet rscount=stmtcount.executeQuery(sqlcount);
int pageSize=5; //每頁5條
int rowCount=0; //總的記錄數
rs.last();
rowCount = rs.getRow();
int pageCount; //總的頁數
int currPage = 0; //當前頁數
String strPage;
strPage=request.getParameter("page");
if (strPage==null){
currPage=1;
}
else{
currPage=Integer.parseInt(strPage);
if (currPage<1) currPage=1;
}
pageCount=(rowCount+pageSize-1)/pageSize;
if (currPage>pageCount) currPage=pageCount;
int thepage=(currPage-1)*pageSize;
int n=0;
%>
當前為第:<%=currPage%>頁<p>
<a href="testpage.jsp?page=1">首 頁</a>
<%
if (currPage>1){
%>
<a href="testpage.jsp?page=<%=currPage-1%>">上一頁</a>
<%
}
%>
<%
if (currPage<pageCount){
%>
<a href="testpage.jsp?page=<%=currPage+1%>">下一頁</a>
<%
}
%>
<a href="testpage.jsp?page=<%=pageCount%>">尾 頁</a><p><br><hr>
共<%=rowCount%>條記錄 頁次:<%=currPage%>/<%=pageCount%>頁 <%=pageSize%>條/頁
<table width="80%">
<%
if (currPage>0){
rs.absolute(thepage+1);
while (n<pageSize && !rs.isAfterLast()){
out.println("<tr><td>");
out.println(rs.getInt(1)+"</td><td>");
out.println(rs.getString(2)+"</td></tr>");
rs.next();
++n;
}
}
%>
<%
rs.close();
//rscount.close();
stmt.close();
//stmtcount.close();
conn.close();
%>
//偶在Oracle8.1.6上測試,結果能顯示出來,但是name欄位值給的好像是16進位位元組串。但在Oracle8.1.7以後都沒問題。可能是jdbc的支援程度不一樣。