Pagecontrol.java~2~
上传用户: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.        String pagesql="";
  92.        if(forbiden.equals("")){
  93.            pagesql = "select count(*) from " + text;
  94.        }else{
  95.            pagesql = "select count(*) from " + text + " where "+forbiden;
  96.        }
  97.        ResultSet pagers = consql.getStatement(pagesql);//取總文章數
  98.        while(pagers.next()){
  99.            this.allcol = pagers.getInt(1);
  100.            System.out.println("allcol "+allcol);
  101.        }
  102.        pagers.close();
  103.        //獲得總頁面數
  104.        this.allpage = (int)Math.ceil((allcol + ipage-1)/ipage);
  105.        if(pages>allpage || pages == 0){
  106.            cpage =1;
  107.        }else{
  108.            cpage = pages;
  109.        }
  110.        String sql="";
  111.        int a1=cpage*ipage-allcol;//判断还剩余的纪录数
  112.        //獲得当前页
  113.        if(((cpage-1)*ipage)==0){
  114.            if(forbiden.equals("")){
  115.            sql = "select Top "+ipage+" * from "+text+" order by "+key+" "+order;
  116.            }else{
  117.            sql = "select Top "+ipage+" * from "+text+" where "+forbiden+" order by "+key+" "+order;
  118.            }
  119.        }else if(a1<0){
  120.           if(forbiden.equals("")){
  121.           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;
  122.           }else{
  123.           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;
  124.           }
  125.        }else if(a1>=0){
  126.            if(forbiden.equals("")){
  127.            sql = "select Top "+a1+" * from "+text+" where "+key+" not in (select Top "+(cpage-1)*ipage+" "+key+" from "+text+" order by "+key+" "+order+")order by "+key+" "+order;
  128.            }else{
  129.            sql = "select Top "+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;
  130.            }
  131.        }
  132.          this.select=sql;
  133.        return select;
  134.    }
  135.     //分页控制标记方法,第一个参数存需要分页的文件名,第二个参数存页码参数的名字,第三个参数存页码显示的长度,为了格式美观最好设置5以上的数
  136.     public String controlPage(String Filename,String param,int length){
  137.         StringBuffer in = new StringBuffer();
  138.         in.append("共"+allcol+"条记录 分"+allpage+"页  ");
  139.         if(cpage>1){
  140.             in.append("<a href='"+Filename+"?"+param+"="+(cpage-1)+"'>上一页</a>");
  141.         }
  142.         if(cpage<allpage){
  143.             in.append("<a href='"+Filename+"?"+param+"="+(cpage+1)+"'>下一页</a>");
  144.         }
  145.         in.append("&nbsp;&nbsp;&nbsp;");
  146.         int n = length;
  147.         int m=0;
  148.         if((cpage+allpage)>n){
  149.             m=n;
  150.             for(int i=0;i<m;i++){
  151.                 in.append("<a href='"+Filename+"?"+param+"="+(i+1)+"'>["+(i+1)+"]</a>&nbsp;");
  152.             }
  153.             in.append("...");
  154.         }else{
  155.             m=allpage-cpage;
  156.             for(int i=(cpage-1);i<m;i++){
  157.                in.append("<a href='"+Filename+"?"+param+"="+(i+1)+"'>["+(i+1)+"]</a>&nbsp;");
  158.            }
  159.         }
  160.         in.append("&nbsp;&nbsp;&nbsp;&nbsp;当前为第"+cpage+"页");
  161.         this.pagecontrol=in.toString();
  162.         return pagecontrol;
  163.     }
  164. }