Pagecontrol.java
上传用户:dlqqsh
上传日期:2021-11-13
资源大小:7840k
文件大小:7k
源码类别:

OA系统

开发平台:

Java

  1. package control.Textcontrol;
  2. import java.io.*;
  3. import java.lang.*;
  4. import java.sql.*;
  5. import java.util.*;
  6. import control.*;
  7. public class Pagecontrol {
  8.     private int ipage;//分頁單位
  9.     private int allpage;//總頁數
  10.     private int pages=1;//接受的頁碼變數
  11.     private int cpage=1;//當前頁
  12.     private int allcol=0;
  13.     private String[] context;
  14.     private String pagecontrol;
  15.     private String select;
  16.     public Pagecontrol() {
  17.     }
  18.     public void setpages(String i){
  19.         int change = java.lang.Integer.valueOf(i).intValue();
  20.         this.pages=change;
  21.     }
  22.     //参数一中存一个已经完成连接的Connection对象,参数二中存每页显示的行数,第三个参数存要操作的表名,第四个参数存这个表的主键的键名,第五个参数存排序方式 当为""时为正序,当为"desc"时为逆序,后一个参数存要查找的字段,最后一个参数为查询条件
  23.     public String[] getPageinf(int page,String text,String key,String order,String showcolm[],String forbiden) throws Exception{
  24.         sqlcontrol consql = new sqlcontrol();
  25.         consql.getMysqlconn("newsinfo");
  26.         this.ipage = page;
  27.         String pagesql="";
  28.         if(forbiden.equals("")){
  29.             pagesql = "select count(*) from " + text;
  30.         }else{
  31.             pagesql = "select count(*) from " + text + " where "+forbiden;
  32.         }
  33.         ResultSet pagers = consql.getStatement(pagesql);//取總文章數
  34.         while(pagers.next()){
  35.             this.allcol = pagers.getInt(1);
  36.         }
  37.         pagers.close();
  38.         //獲得總頁面數
  39.         this.allpage = (int)Math.ceil((allcol + ipage-1)/ipage);
  40.         if(pages>allpage || pages == 0){
  41.             cpage =1;
  42.         }else{
  43.             cpage = pages;
  44.         }
  45.         String sql="";
  46.         int a1=cpage*ipage-allcol;//判断到达尾页时应该显示的纪录数
  47.         //獲得当前页
  48.         if(((cpage-1)*ipage)==0){
  49.             if(forbiden.equals("")){
  50.             sql = "select * from "+text+" order by "+key+" "+order+" limit "+ipage+"";
  51.             }else{
  52.             sql = "select * from "+text+" where "+forbiden+" order by "+key+" "+order+" limit "+ipage+"";
  53.             }
  54.         }else if(a1<0){
  55.             if(forbiden.equals("")){
  56.             sql = "select * from "+text+" order by "+key+" "+order+" limit "+(cpage-1)*ipage+","+ipage+";";
  57.             }else{
  58.             sql = "select * from "+text+" where "+forbiden+" order by "+key+" "+order+" limit "+(cpage-1)*ipage+","+ipage+";";
  59.             }
  60.         }else if(a1>=0){
  61.             if(forbiden.equals("")){
  62.                 sql = "select * from "+text+" order by "+key+" "+order+" limit "+(cpage-1)*ipage+","+a1+";";
  63.             }else{
  64.                 sql = "select * from "+text+" where "+forbiden+" order by "+key+" "+order+" limit "+(cpage-1)*ipage+","+a1+";";
  65.             }
  66.         }
  67.         ResultSet rs = consql.getStatement(sql);
  68.         int wei=0;
  69.         if(a1<0){
  70.             wei = (ipage) * (showcolm.length);
  71.         }else if(a1>=0){
  72.             wei = (a1) * (showcolm.length);
  73.         }
  74.         String getcontext[] = new String[wei];
  75.         int help=0;
  76.         while(rs.next()){
  77.             for(int i=0;i<showcolm.length;i++){
  78.               getcontext[help] = rs.getString(showcolm[i]);
  79.               help++;
  80.             }
  81.           }
  82.           this.context = getcontext;
  83.           rs.close();
  84.         return context;
  85.     }
  86.     //参数一中存一个已经完成连接的Connection对象,参数二中存每页显示的行数,第三个参数存要操作的表名,第四个参数存这个表的主键的键名,第五个参数存排序方式 当为""时为正序,当为"desc"时为逆序,后一个参数存要查找的字段,最后一个参数为查询条件
  87.    public String getPageinfsql(int page,String text,String key,String order,String forbiden) throws Exception{
  88.        sqlcontrol consql = new sqlcontrol();
  89.        consql.getSQL2005conn("dbconfig.xml");
  90.        this.ipage = page;
  91.        //System.out.println("page "+page );
  92.        String pagesql="";
  93.        if(forbiden.equals("")){
  94.            pagesql = "select count(*) from " + text;
  95.        }else{
  96.            pagesql = "select count(*) from " + text + " where "+forbiden;
  97.        }
  98.        ResultSet pagers = consql.getStatement(pagesql);//取總文章數
  99.        while(pagers.next()){
  100.            this.allcol = pagers.getInt(1);
  101.           // System.out.println("allcol "+allcol);
  102.        }
  103.        pagers.close();
  104.        //獲得總頁面數
  105.        this.allpage = (int)Math.ceil((allcol + ipage-1)/ipage);
  106.        //System.out.println("allpage "+allpage);
  107.        if(pages>allpage || pages == 0){
  108.            cpage =1;
  109.        }else{
  110.            cpage = pages;
  111.        }
  112.        //System.out.println("cpage "+cpage);
  113.        String sql="";
  114.        int a1=cpage*ipage-allcol;//判断还剩余的纪录数
  115.        //System.out.println("a1 " + a1);
  116.        //獲得当前页
  117.        if(((cpage-1)*ipage)==0){
  118.            if(forbiden.equals("")){
  119.            sql = "select Top "+ipage+" * from "+text+" order by "+key+" "+order;
  120.            }else{
  121.            sql = "select Top "+ipage+" * from "+text+" where "+forbiden+" order by "+key+" "+order;
  122.            }
  123.        }else if(a1<0){
  124.           if(forbiden.equals("")){
  125.           sql = "select Top "+ipage+" * from "+text+" where "+key+" not in (select Top "+(cpage-1)*ipage+" "+key+" from "+text+" order by "+key+" "+order+")order by "+key+" "+order;
  126.           }else{
  127.           sql = "select Top "+ipage+" * from "+text+" where "+key+" not in (select Top "+(cpage-1)*ipage+" "+key+" from "+text+" order by "+key+" "+order+") and "+forbiden+" order by "+key+" "+order;
  128.           }
  129.        }else if(a1>=0){
  130.            if(forbiden.equals("")){
  131.            sql = "select Top "+(page-a1)+" * from "+text+" where "+key+" not in (select Top "+(cpage-1)*ipage+" "+key+" from "+text+" order by "+key+" "+order+")order by "+key+" "+order;
  132.            }else{
  133.            sql = "select Top "+(page-a1)+" * from "+text+" where "+key+" not in (select Top "+(cpage-1)*ipage+" "+key+" from "+text+" order by "+key+" "+order+") and "+forbiden+" order by "+key+" "+order;
  134.            }
  135.        }
  136.        this.select=sql;
  137.        return select;
  138.    }
  139.     //分页控制标记方法,第一个参数存需要分页的文件名,第二个参数存页码参数的名字,第三个参数存页码显示的长度,为了格式美观最好设置5以上的数
  140.     public String controlPage(String Filename,String param,int length){
  141.         StringBuffer in = new StringBuffer();
  142.         in.append("共"+allcol+"条记录 分"+allpage+"页  ");
  143.         if(cpage>1){
  144.             in.append("<a href='"+Filename+"?"+param+"="+(cpage-1)+"'>上一页</a>");
  145.         }
  146.         if(cpage<allpage){
  147.             in.append("<a href='"+Filename+"?"+param+"="+(cpage+1)+"'>下一页</a>");
  148.         }
  149.         in.append("&nbsp;&nbsp;&nbsp;");
  150.         int n = length;
  151.         int m=0;
  152.         if((cpage+allpage)>n){
  153.             m=n;
  154.             for(int i=0;i<m;i++){
  155.                 in.append("<a href='"+Filename+"?"+param+"="+(i+1)+"'>["+(i+1)+"]</a>&nbsp;");
  156.             }
  157.             in.append("...");
  158.         }else{
  159.             m=allpage-cpage;
  160.             for(int i=(cpage-1);i<m;i++){
  161.                in.append("<a href='"+Filename+"?"+param+"="+(i+1)+"'>["+(i+1)+"]</a>&nbsp;");
  162.            }
  163.         }
  164.         in.append("&nbsp;&nbsp;&nbsp;&nbsp;当前为第"+cpage+"页");
  165.         this.pagecontrol=in.toString();
  166.         return pagecontrol;
  167.     }
  168. }