Java 分页功能代码

收藏本信息编号:135 发布时间:2009-07-11 截止日期: 地区:


<%@  page  contentType="text/html;charset=8859_1"  %> 
<% 
//变量声明 
java.sql.Connection  sqlCon;  //数据库连接对象 
java.sql.Statement  sqlStmt;  //SQL语句对象 
java.sql.ResultSet  sqlRst;  //结果集对象 
java.lang.String  strCon;  //数据库连接字符串 
java.lang.String  strSQL;  //SQL语句 
int  intPageSize;  //一页显示的记录数 
int  intRowCount;  //记录总数 
int  intPageCount;  //总页数 
int  intPage;  //待显示页码 
java.lang.String  strPage; 
int  i; 
//设置一页显示的记录数 
intPageSize  =  2; 
//取得待显示页码 
strPage  =  request.getParameter("page"); 
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 
intPage  =  1; 

else{//将字符串转换成整型 
intPage  =  java.lang.Integer.parseInt(strPage); 
if(intPage<1)  intPage  =  1; 

//装载JDBC驱动程序 
java.sql.DriverManager.registerDriver(new  oracle.jdbc.driver.OracleDriver()); 
//设置数据库连接字符串 
strCon  =  "jdbc:oracle:thin:@linux:1521:ora4cweb"; 
//连接数据库 
sqlCon  =  java.sql.DriverManager.getConnection(strCon,"hzq","hzq"); 
//创建一个可以滚动的只读的SQL语句对象 
sqlStmt  =  sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
//准备SQL语句 
strSQL  =  "select  name,age  from  test"; 
//执行SQL语句并获取结果集 
sqlRst  =  sqlStmt.executeQuery(strSQL); 
//获取记录总数 
sqlRst.last(); 
intRowCount  =  sqlRst.getRow(); 
//记算总页数 
intPageCount  =  (intRowCount+intPageSize-1)  /  intPageSize; 
//调整待显示的页码 
if(intPage>intPageCount)  intPage  =  intPageCount; 
%> 
<html> 
<head> 
<meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312"> 
<title>JSP数据库操作例程  -  数据分页显示  -  JDBC  2.0  -  Oracle</title> 
</head> 
<body> 
<table  border="1"  cellspacing="0"  cellpadding="0"> 
<tr> 
<th>姓名</th> 
<th>年龄</th> 
</tr> 
<% 
if(intPageCount>0){ 
//将记录指针定位到待显示页的第一条记录上 
sqlRst.absolute((intPage-1)  *  intPageSize  +  1); 
//显示数据 
i  =  0; 
while(i<intPageSize  &&  !sqlRst.isAfterLast()){ 
%> 
<tr> 
<td><%=sqlRst.getString(1)%></td><td><%=sqlRst.getString(2)%></td> 
</tr> 
<% 
sqlRst.next(); 
i++; 


%> 
</table> 
第<%=intPage%>页&nbsp;&nbsp;共<%=intPageCount%>页&nbsp;&nbsp;<%if(intPage<intPageCount){%><a  href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a><%}%>&nbsp;&nbsp;<%if(intPage>1){%><a  href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a><%}%> 
</body> 
</html> 
<% 
//关闭结果集 
sqlRst.close(); 
//关闭SQL语句对象 
sqlStmt.close(); 
//关闭数据库 
sqlCon.close(); 
%>     
 
--------------------------------------------------------------- 
 
简单方法如下: 
int  curpage=1;//当前页 
int  page_record=20;//每页显示的记录数 
//显示第1000页的记录,用下面的方法 
curpage=1000; 
rs.executeQuery("select  top  "+page_record+"  *  from  tablename  where  id  not  in  (select  top  "+(curpage*page_record)+"  id  from  tablename  order  by  id  desc)  order  by  id  desc"); 
本查询语句得到的是所要显示的1000页的20条记录,大致思路为—— 
子查询排除前999*20(页数*每页记录数)条记录,父查询则对余下的记录进行降序排列 
--------------------------------------------------------------- 
 
<%@  page  contentType="text/html;charset=8859_1"  %> 
<% 
//变量声明 
java.sql.Connection  sqlCon;  //数据库连接对象 
java.sql.Statement  sqlStmt;  //SQL语句对象 
java.sql.ResultSet  sqlRst;  //结果集对象 
java.lang.String  strCon;  //数据库连接字符串 
java.lang.String  strSQL;  //SQL语句 
int  intPageSize;  //一页显示的记录数 
int  intRowCount;  //记录总数 
int  intPageCount;  //总页数 
int  intPage;  //待显示页码 
java.lang.String  strPage; 
int  i; 
//设置一页显示的记录数 
intPageSize  =  25; 
//取得待显示页码 
strPage  =  request.getParameter("page"); 
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 
intPage  =  1; 

else{//将字符串转换成整型 
intPage  =  java.lang.Integer.parseInt(strPage); 
if(intPage<1)  intPage  =  1; 

//装载JDBC驱动程序 
 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
//java.sql.DriverManager.registerDriver(new  oracle.jdbc.driver.OracleDriver()); 
//设置数据库连接字符串 
strCon  =  "jdbc:odbc:test"; 
//连接数据库 
sqlCon  =  java.sql.DriverManager.getConnection(strCon,"ApsuiteUser","uwerinfo"); 
//创建一个可以滚动的只读的SQL语句对象 
 
//sqlStmt=sqlCon.createStatement(); 
sqlStmt  =  sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
//准备SQL语句 
strSQL  =  "select  lsh,files  from  t_sys"; 
//执行SQL语句并获取结果集 
sqlRst  =  sqlStmt.executeQuery(strSQL); 
//获取记录总数 
sqlRst.last(); 
intRowCount  =  sqlRst.getRow(); 
 
//记算总页数 
intPageCount  =  (intRowCount+intPageSize-1)  /  intPageSize; 
 
//调整待显示的页码 
if(intPage>intPageCount)  intPage  =  intPageCount; 
%> 
<html> 
<head> 
<meta  http-equiv="Content-Type"  content="text/html;  charset=gb2312"> 
<title>JSP数据库操作例程  -  数据分页显示  -  JDBC  2.0  -  Oracle</title> 
</head> 
<body> 
<table  border="1"  cellspacing="0"  cellpadding="0"> 
<tr> 
<th>姓名</th> 
<th>年龄</th> 
</tr> 
<% 
if(intPageCount>0){ 
//将记录指针定位到待显示页的第一条记录上 
sqlRst.absolute((intPage-1)  *  intPageSize  +  1); 
//显示数据 
i  =  0; 
while(i<intPageSize  &&  !sqlRst.isAfterLast()){ 
%> 
<tr> 
<td><%=sqlRst.getString(1)%></td> 
<td><%=sqlRst.getString(2)%></td> 
</tr> 
<% 
sqlRst.next(); 
i++; 


%> 
</table> 
第<%=intPage%>页&nbsp;&nbsp;共<%=intPageCount%>页&nbsp;&nbsp;<%if(intPage<intPageCount){%><a  href="dbtest.jsp?page=<%=intPage+1%>">下一页</a><%}%>&nbsp;&nbsp;<%if(intPage>1){%><a  href="dbtest.jsp?page=<%=intPage-1%>">上一页</a><%}%> 
</body> 
</html> 
<% 
//关闭结果集 
sqlRst.close(); 
//关闭SQL语句对象 
sqlStmt.close(); 
//关闭数据库 
sqlCon.close(); 
%>   
 
public  class  pageControl 

           public  int  curpage  ;   
           public  int  maxpage  ;   
           public  int  maxrowcount  ;   
           public  int  rowsperpage  ;   
            
            
                       public  void  calMaxPage()   
                 {                   
                                 if  (this.maxrowcount  %  this.rowsperpage==0) 
                       { 
                       this.maxpage  =  this.maxrowcount/this.rowsperpage; 
                       } 
                       else 
                       { 
           this.maxpage  =  this.maxrowcount/this.rowsperpage  +  1;                         
                       } 
           } 
           } 
jsp中: 
pageControl  pageCtl=new  pageControl(); 
               pageCtl.rowsperpage=10;//每页显示的行数 
               int  pageNo=1; 
 
               if  (request.getParameter("page")!=null)   
                                   { 
                             pageNo=Integer.parseInt(request.getParameter("page")); 
                       } 
 
               pageCtl.curpage=pageNo;//当前页 
       pageCtl.maxrowcount=从数据库中取得的要显示出来的记录数 
         pageCtl.calMaxPage();//调用方法 
 <%if(pageCtl.curpage==1){  out.print("  首页  上一页");      }else{    %> 
       <A  HREF="<%=global_usermanage%>?flag=<%=flag%>&userid1=<%=userid1%>">首页</A>  <A  HREF="<%=global_usermanage%>?page=<%=pageCtl.curpage-1%>&flag=<%=flag%>&userid1=<%=userid1%>">上一页</A> 
       <%}%> 
       <%if(pageCtl.curpage==pageCtl.maxpage){  out.print("下一页  尾页");      }else{    %> 
       <A  HREF="<%=global_usermanage%>?page=<%=pageCtl.curpage+1%>&flag=<%=flag%>&userid1=<%=userid1%>">下一页</A>  <A  HREF="<%=global_usermanage%>?page=<%=pageCtl.maxpage%>&flag=<%=flag%>&userid1=<%=userid1%>">尾页</A> 
       <%}%> 
       每页<%=pageCtl.rowsperpage%>行  共<%=pageCtl.maxrowcount%>行  第<%=pageCtl.curpage%>页 
       共<%=pageCtl.maxpage%>页 
//over 
 
 
 
--------------------------------------------------------------- 
 
 
Oracle中: 
采用  top  n  方法 
select  *   
   from  (select  item_code,  rownum  rno 
                   from  epd_item_master 
                 where  rownum  <=  10041 
                 order  by  item_code) 
 where  rno  >=  10020; 
 
可取出  10020-10041条纪录 
 
程序使用时课改写一下(我在bean中实现,效果很好,十几万条纪录的表,查询速度很快) 

select  * 
from  (select  HXH_TNAME.*,  rownum  rno   
           from  ("+SQLstr+")  HXH_TNAME   

 

发布人信息

[错误报告] [推荐] [收藏][打印] [关闭] [返回顶部]

当前共有0人发表了评论.

推荐信息

最新信息