(1)JDBC2.0的可滚动结果集。
(2)HTTPGET请求。
一、可滚动结果集
Connectioncon=DriverManager.getConnection();
PreparedStatementstmt=con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSetrs=stmt.executeQuery();
常用方法:
(1)rs.absolute(n);可以将指针跳到第n行。
(2)rs.relative(n);可以将指针相对向下或向上n行。
(3)rs.first();
(4)rs.last();
(5)intcurRow=rs.getRow();指针指向的当前行
二、功能实现分解
1.计算结果的个数
rs.last();
intsize=rs.getRow();
即可得到结果的个数。
2.得到需要分几页
如果一页能够放5条记录,则
intpageCount=(size%5==0)?(size/5):(size/5+1);
即可获得需要分几页。
3.控制一页中规定显示记录个数
如果一页能显示5条记录,可以通过使用count进行计数。
intcount=0;
do{
if(count>=5)break;
.....
count++;
}while(rs.next());
通过break语句,能够使其显示到超过规定条目就跳出。
4.如何知道当前是第几页
通过HTTPget的特点,在地址栏中标明当前地址,如
Stringtmp=request.getParameter("curPage");
if(tmp==null){
tmp="1";
}
curPage=Integer.parseInt(tmp);
可以获得当前页。
注意:
rs.absolute(1);表示指向第一条记录;
不存在rs.absolute(0);
rs.absolute((curPage-1)*PAGESIZE+1);把结果集指针调整到当前页应该显示的记录的开始.
比如如果一页显示5条记录,当前页是第二页,则需要把指针调整到6,当前页是第三页,则需要把指针调整为11.
5.点击首页、上一页、下一页、尾页的行为
6.为了保存当前页位置,则需要把当前页位置设为全局变量。
<%@pagecontentType="text/html"pageEncoding="GB2312"language="java"%>
<%@pageimport="java.sql.*"%>
<%!
publicstaticfinalStringDRIVER="com.mysql.jdbc.Driver";
publicstaticfinalStringUSER="root";
publicstaticfinalStringPASS="12345";
publicstaticfinalStringURL="jdbc:mysql://localhost:3306/MLDN";
publicstaticfinalintPAGESIZE=5;
intpageCount;
intcurPage=1;
%>
<%
//一页放5个
Stringuser=null;
Stringpass=null;
try{
Class.forName(DRIVER);
Connectioncon=DriverManager.getConnection(URL,USER,PASS);
Stringsql="SELECTempno,ename,job,hiredate,sal,commFROMemp";
PreparedStatementstat=con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
ResultSetrs=stat.executeQuery();
rs.last();
intsize=rs.getRow();
pageCount=(size%PAGESIZE==0)?(size/PAGESIZE):(size/PAGESIZE+1);
Stringtmp=request.getParameter("curPage");
if(tmp==null){
tmp="1";
}
curPage=Integer.parseInt(tmp);
if(curPage>=pageCount)curPage=pageCount;
booleanflag=rs.absolute((curPage-1)*PAGESIZE+1);
out.println(curPage);
intcount=0;
do{
if(count>=PAGESIZE)break;
intempno=rs.getInt(1);
Stringename=rs.getString(2);
Stringjob=rs.getString(3);
Datehiredate=rs.getDate(4);
floatsal=rs.getFloat(5);
intcomm=rs.getInt(6);
count++;
%>
<%
}while(rs.next());
con.close();
}
catch(Exceptione){
}
%>
第<%=curPage%>页/共<%=pageCount%>页