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