Oracle中实现分页的SQL语句和在JSP页面实现分页技术(测试版,更新中……)
写了两个有关分页的SQL 语句,希望对大家有点帮助...记住,只能在Oracle下使用
1 获取总页数
SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1) AS pages FROM XZQH SELECT DECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)AS pages FROM XZQH
SELECT x.* from (SELECT z.*,rownum numbers from XZQH z where rownum<101) x where x.numbers>90
SELECT x.* from (SELECT z.*,rownum numbers from XZQH z where rownum<101) x where x.numbers>90
select x.* from (select y.*,rownum row_id from (select z.* from admin z )y)x where row_id between 90 and 101
int pageSize=3;//每页显示3条数据 int pageNow=1;//当前显示页数 int pageCount=0;//共有多少页(计算) int rowCount=0;//一共多少条数据(查表)//动态接受PageNow的值从本页面的超链接处得到的值 String pagenow=request.getParameter("pageNow"); if(pagenow!=null){ pageNow=Integer.parseInt(pagenow);//把接受的值传给pageNow }
TestJDBC1 jdbc=new TestJDBC1(); String sql="select count(*)from admin"; ResultSet rs=jdbc.query(sql); try { while(rs.next()){ rowCount=rs.getInt(1);//获得共多少条数据 } } catch (SQLException e) { e.printStackTrace(); }
pageCount = (rowCount + pageSize - 1) / pageSize;
String sql1="select x.* from (select z.*,rownum numbers from admin z where rownum<="+(pageNow*pageSize)+")x where x.numbers>="+((pageNow*pageSize)-pageSize+1)+"";
String sql1 = "select x.* from (select y.*,rownum row_id from (select z.* from admin z )y)x where row_id between "+((pageNow - 1) * pageSize + 1)+" and "+(pageNow * pageSize);
ResultSet rs1=jdbc.query(sql1); try { while(rs1.next()){ out.println("<tr><td>"+rs1.getString(1)+"</td>"); out.println("<td>"+rs1.getString(2)+"</td>"); out.println("<td>"+rs1.getString(3)+"</td></tr>"); } } catch (SQLException e) { e.printStackTrace(); }
if(pageNow!=1){ out.println("<a href=welcome.jsp?pageNow="+(pageNow-1)+">上一页</a>"); } //判断是否还有足够的页数要显示 if((pageCount-pageNow)<4){ for(int i=pageNow;i<=pageNow+(pageCount-pageNow);i++){ out.println("<a href=welcome.jsp?pageNow="+i+">["+i+"]</a>"); } }else{ for(int i=pageNow;i<=pageNow+4;i++){ out.println("<a href=welcome.jsp?pageNow="+i+">["+i+"]</a>"); } }//下一页 if(pageNow!=pageCount){ out.println("<a href=welcome.jsp?pageNow="+(pageNow+1)+">下一页</a>"); }
int linkCount=3; //显示超链接 //首页 out.println("<a href=welcome.jsp?pageNow=" + 1 + ">首页</a>"); //上一页 if (pageNow > 1) { int lastPage = (pageNow != 1) ? (pageNow - 1) : 1; out.println("<a href=welcome.jsp?pageNow=" + lastPage + ">上一页</a>"); } //中间显示部分 int middPage = (pageCount - pageNow >= linkCount) ? (pageNow - 1) : (pageCount - linkCount); for (int i = middPage + 1; i <= middPage + linkCount; i++) { if (i == pageNow) { out.println(" <a href=welcome.jsp?pageNow=" + i + ">" + i + "</a>"); } else { out.println(" <a href=welcome.jsp?pageNow=" + i + ">[" + i + "]</a>"); } } if (pageNow < pageCount) { //下一页 int nextPage = (pageNow != pageCount) ? (pageNow + 1) : pageCount; out.println("<a href=welcome.jsp?pageNow=" + (pageNow + 1) + ">下一页</a>"); }