Oracle中实现分页的SQL语句和在JSP页面实现分页技术(测试版,更新中……)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Oracle中实现分页的SQL语句和在JSP页面实现分页技术(测试版,更新中……)

Oracle中实现分页的SQL语句和在JSP页面实现分页技术(测试版,更新中……)

 2011/11/17 9:37:27  fatedgar  http://fatedgar.iteye.com  我要评论(0)
  • 摘要:写了两个有关分页的SQL语句,希望对大家有点帮助...记住,只能在Oracle下使用1获取总页数SELECTDECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)ASpagesFROMXZQHSELECTDECODE(mod(COUNT(*),100),0,COUNT(*)/100,TRUNC(COUNT(*)/100,0)+1)ASpagesFROMXZQH其中XZQH是表名
  • 标签:实现 ORA 测试 SQL SQL语句 Oracle 测试版 技术 JS
写了两个有关分页的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 

其中XZQH是表名,可以换成别的表格或者与别的表格相连或者加上查询条件....总之可以把XZQH换成FROM后的一切东西.

100是没页显示的记录数,换成你想要的!!!

生成结果是具有pages列的一个表格.可以用resultSet.getInt("pages")获得

2 获取特定的记录数据
    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 

其中XZQH的含义与上述一样,可以换成你任何想要的条件和表连接

其中101和90是指定界限的数字,拿此例来说,是取出第90-----100条数据.

      2.
select x.* from (select y.*,rownum row_id from (select z.* from admin z )y)x where row_id between 90 and 101

好了,点到为止..具体在实践中该怎么用,大家自己慢慢琢磨吧!!!





分页技术(写在jsp页面的):

1、先定义:
  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
  } 

2、获取rowCount:

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();
   }

3、获取pageCount:

//分多少页计算
   //方法一
   //if(rowCount%pageSize==0){
   // pageCount=rowCount/pageSize;
   //}else{
   // pageCount=rowCount/pageSize+1;
   //}
   //方法二(推荐)
  
pageCount = (rowCount + pageSize - 1) / pageSize;

4、获取动态的数据查询(选哪一页就查询那页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();
   }

可以放在表格中



5、动态生成超链接,用重写Url方法进行传值,把pageNow值传到本页面也=刷新本页面一次

//第一种方法

//上一页
  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>");
   }
发表评论
用户名: 匿名