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

OA系统

开发平台:

Java

  1. package control;
  2. import java.lang.*;
  3. import java.util.*;
  4. import java.sql.*;
  5. import sun.jdbc.odbc.*;
  6. import sun.jdbc.odbc.JdbcOdbcDriver;
  7. import javax.sql.*;
  8. import javax.xml.xpath.*;
  9. import org.xml.sax.*;
  10. public class sqlcontrol {
  11.     private int getCulm;
  12.     private int getCon;
  13.     private int maxnumber = 99;
  14.     private Connection conn;
  15.     private Statement stmt;
  16.     private Statement del;
  17.     private Statement runrs;
  18.     private Statement change;
  19.     private String Mousql="none";
  20.     private ResultSet rs;
  21.     private String res[][];
  22.     //设置一次性处理的最大数量的方法
  23.     public sqlcontrol() {
  24.     }
  25.     public void setMaxnumber(int getMax){
  26.         this.maxnumber = getMax;
  27.     }
  28.     public Connection getSQL2005conn(String xmlname) throws Exception{
  29.        String getpath=this.getClass().getClassLoader().getResource("/").getPath()+"\"+xmlname;
  30.        String get[] = new String[5];
  31.        XPath xpathEngine = XPathFactory.newInstance().newXPath();
  32.        String xpathExpression = "/Root/port/text()";
  33.        InputSource xmlSource = new InputSource(getpath);    // 假设 XML 文件路径为 C:a.xml
  34.        get[0]=xpathEngine.evaluate(xpathExpression, xmlSource);//端口号
  35.        xpathExpression = "/Root/database/text()";
  36.        get[1]=xpathEngine.evaluate(xpathExpression, xmlSource);//数据库名
  37.        xpathExpression = "/Root/name/text()";
  38.        get[2]=xpathEngine.evaluate(xpathExpression, xmlSource);//用户名
  39.        xpathExpression = "/Root/password/text()";
  40.        get[3]=xpathEngine.evaluate(xpathExpression, xmlSource);//用户密码
  41.        xpathExpression = "/Root/host/text()";
  42.        get[4]=xpathEngine.evaluate(xpathExpression, xmlSource);//服务主机
  43.         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  44.         this.conn = DriverManager.getConnection("jdbc:sqlserver://"+get[4]+":"+get[0]+";DatabaseName="+get[1],get[2],get[3]);
  45.         return conn;
  46.     }
  47.     public Connection getMysqlconn_birdge(String server,String dbname,String user,String pass,String port){
  48.          String MySqldriver;//MYSQL Server驱动程序字符串
  49.          String MySqlURL; //MYSQL Server连接字符串
  50.          MySqldriver = "org.gjt.mm.mysql.Driver";
  51.          MySqlURL = "jdbc:mysql://";
  52.          try{
  53.              MySqlURL =MySqlURL+server+":"+port+"/"+dbname+"?user="+user+"&password="+pass+"&useUnicode=true&characterEncoding=GBK";
  54.              Class.forName(MySqldriver);
  55.              this.conn = DriverManager.getConnection(MySqlURL);
  56.          }catch(Exception e){
  57.              e.printStackTrace();
  58.          }
  59.     return conn;
  60.     }
  61.     //mysql连接数据库方法(数据源接法)
  62.     public Connection getMysqlconn(String path){
  63.         return conn;
  64.     }
  65.     //ACCESS数据库连接类,参数为数据库路径
  66.     public Connection getConn(String path)
  67.    {
  68.      try {
  69.        String forname = "sun.jdbc.odbc.JdbcOdbcDriver";
  70.        Class.forName(forname);
  71.        StringBuffer dbUrl = new StringBuffer(
  72.                "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
  73.        String s = path;//需要数据库的路径
  74.        dbUrl.append(s);
  75.        this.conn = DriverManager.getConnection(dbUrl.toString());
  76.    }
  77.     catch(Exception e)
  78.    {
  79.        e.printStackTrace( );
  80.    }
  81.      return conn;
  82.    }
  83.    //SQLSERVER数据库连接类
  84.     public Connection getConn(String url,String name,String pwd){
  85.         return conn;
  86.     }
  87.     //批量录入的方法,参数分别代表要操作的表名,要操作的字段,要添加的内容
  88.     public String[] Autoinsert(String name,String ziduan[],String context[]){
  89.         //获得要输入的字段数
  90.         for(int helpget=0;helpget<ziduan.length;helpget++){
  91.             try{
  92.                 if(ziduan[helpget].equals("")){
  93.                     this.getCulm = helpget;
  94.                     break;
  95.                 }else{
  96.                     this.getCulm = ziduan.length;
  97.                 }
  98.             }catch(Exception e){
  99.                 this.getCulm = helpget;
  100.                 break;
  101.             }
  102.         }
  103.         //获得要输入的内容
  104.         for(int helpgetCon=0;helpgetCon<context.length;helpgetCon++)
  105.         { try{
  106.            if(context[helpgetCon].equals(""))
  107.            {this.getCon=helpgetCon;break;}
  108.             else {this.getCon=context.length;}
  109.            }catch(Exception e)
  110.          {
  111.            this.getCon=helpgetCon;break;
  112.         }
  113.       }
  114.       //
  115.       int n = getCon/getCulm;
  116.       //设置数组变量,存要操作的SQL语句
  117.       String AutoAllinsert[] = new String[n];
  118.       StringBuffer inone = new StringBuffer();
  119.       StringBuffer inonef = new StringBuffer();
  120.       String getsql = "insert into "+name;
  121.       //获得批量录入时字段组合和录入内容组合
  122.       if(getCulm==getCon){
  123.           for(int getziduan=0;getziduan<getCulm;getziduan++){
  124.               if(getziduan == (getCulm-1)){
  125.                   inone.append(ziduan[getziduan]);
  126.               }else{
  127.                   inone.append((ziduan[getziduan]+","));
  128.               }
  129.           }
  130.           for(int getcontant=0;getcontant<getCon;getcontant++){
  131.               if(getcontant ==(getCon-1)){
  132.                   inonef.append(context[getcontant]);
  133.               }else{
  134.                   inonef.append((context[getcontant]+","));
  135.               }
  136.           }
  137.           //拼装成所需要的SQL语句
  138.           getsql = getsql+"("+inone.toString()+") values("+inonef.toString()+");";
  139.           AutoAllinsert[0] = getsql;
  140.           //向数据库中写入数据
  141.           try{
  142.               this.stmt = conn.createStatement();
  143.               stmt.executeUpdate(getsql);
  144.           }catch(Exception e){
  145.               e.printStackTrace();
  146.           }
  147.       }else if(getCulm<getCon){   //多纪录批量录入部分
  148.           for(int getziduan=0;getziduan<getCulm;getziduan++){
  149.               if(getziduan == (getCulm-1)){
  150.                   inone.append(ziduan[getziduan]);
  151.               }else{
  152.                   inone.append((ziduan[getziduan]+","));
  153.               }
  154.           }
  155.           int bijiao=0,n4=0;
  156.           for(int n1=0;n1<n;n1++){
  157.               for(int n3=0;n3<getCulm;n3++){
  158.                   if(bijiao==(getCulm-1)){
  159.                       inonef.append(context[n4]);
  160.                   }else{
  161.                       inonef.append((context[n4]+","));
  162.                   }
  163.                   bijiao++;
  164.                   n4++;
  165.                   if(n4==getCon){
  166.                       n4=n4-1;
  167.                   }
  168.               }
  169.               AutoAllinsert[n1]="insert into "+name+"("+inone.toString()+") values("+inonef.toString()+");";
  170.               bijiao = 0;
  171.               inonef.delete(0,inonef.length());
  172.           }
  173.           //将组合好的SQL语句批量写入数据库
  174.           try{
  175.               this.stmt = conn.createStatement();
  176.               for (int ins = 0; ins < AutoAllinsert.length; ins++) {
  177.                  stmt.executeUpdate(AutoAllinsert[ins]);
  178.               }
  179.           }catch(Exception e){
  180.               e.printStackTrace();
  181.           }
  182.       }
  183.         return AutoAllinsert;
  184.     }
  185.     //执行外来SQL语句的方法,参数为外来SQL语句
  186.     public String MouChoose(String mouchoose)
  187.    {
  188.        String MougetSql=mouchoose;
  189.        this.Mousql=MougetSql;
  190.        try
  191.       {
  192.       Statement stmt1=conn.createStatement();
  193.       stmt1.executeUpdate(Mousql);
  194.       }
  195.       catch(Exception e)
  196.       {
  197.           e.printStackTrace();
  198.       }
  199.        return Mousql;
  200.    }
  201.    //执行自动删除纪录的方法,参数分别代表要操作的表名,及查询语句的条件
  202.    public String AutoDeleteUpdate(String name,String forbiden)
  203.   {    String getsql="";
  204.        try
  205.        {
  206.            getsql="delete"+" "+"from"+" "+name+" ";
  207.            StringBuffer FinallyDeleteSql=new StringBuffer();
  208.            if (forbiden.equals("none")){
  209.                FinallyDeleteSql.append((getsql+";"));
  210.             }else{
  211.                 FinallyDeleteSql.append((getsql+"where "+forbiden+";"));
  212.            }
  213.            getsql = FinallyDeleteSql.toString();
  214.            this.del=conn.createStatement();
  215.            del.executeUpdate(getsql);
  216.        }catch(Exception e)
  217.        {
  218.          e.printStackTrace();
  219.        }
  220.        return getsql;
  221.    }
  222.    //单一更新数据方法,第一个参数是要操作的表名.第二个参数是更新的字段和对应的更新内容,第三个字段为更新条件
  223.    public String AutoModify(String name,String context[],String tiaojian){
  224.        int pan = context.length/2;
  225.        int get = pan*2;
  226.        int shu = 0;
  227.        StringBuffer pinzhuang = new StringBuffer();
  228.        String getsql = "update "+name+" set ";
  229.        for(int n=0;n<get;n+=2){
  230.            if(n==(get-2)){
  231.                pinzhuang.append((context[shu]+"="+context[(shu+1)]));
  232.            }else{
  233.                pinzhuang.append((context[shu]+"="+context[(shu+1)]+","));
  234.            }
  235.            shu+=2;
  236.        }
  237.        getsql=getsql+pinzhuang.toString()+" where "+tiaojian+";";
  238.        try{
  239.            this.change = conn.createStatement();
  240.            change.executeUpdate(getsql);
  241.        }catch(Exception e){
  242.            e.printStackTrace();
  243.        }
  244.         return getsql;
  245.     }
  246.     //批量更新数据库的方法
  247.     public String[] AutoModify(String name,String ziduan[],String context[],String[] key){
  248.         //获得要输入的字段数
  249.         for(int helpget=0;helpget<ziduan.length;helpget++){
  250.             try{
  251.                 if(ziduan[helpget].equals("")){
  252.                     this.getCulm = helpget;
  253.                     break;
  254.                 }else{
  255.                     this.getCulm = ziduan.length;
  256.                 }
  257.             }catch(Exception e){
  258.                this.getCulm = helpget;
  259.                 break;
  260.             }
  261.         }
  262.         //获得要输入的内容
  263.         for(int helpgetCon=0;helpgetCon<context.length;helpgetCon++)
  264.         { try{
  265.            if(context[helpgetCon].equals(""))
  266.            {this.getCon=helpgetCon;break;}
  267.             else {this.getCon=context.length;}
  268.            }catch(Exception e)
  269.          {
  270.            this.getCon=helpgetCon;break;
  271.         }
  272.       }
  273.       //
  274.       int n = getCon/getCulm;
  275.       //设置数组变量,存要操作的SQL语句
  276.       String AutoAllModify[] = new String[n];
  277.       StringBuffer inone = new StringBuffer();
  278.       StringBuffer inonef = new StringBuffer();
  279.       String getsql = "update "+name+" set ";
  280.       //获得批量更新时字段组合和录入内容组合
  281.       //多纪录批量更新部分
  282.           int bijiao=0,n4=0;
  283.         try{
  284.           for(int n1=0;n1<n;n1++){
  285.               for(int n3=0;n3<getCulm;n3++){
  286.                   if(bijiao==(getCulm-1)){
  287.                       inonef.append((ziduan[n3]+"="+context[n4]));
  288.                   }else{
  289.                       inonef.append((ziduan[n3]+"="+context[n4]+","));
  290.                   }
  291.                   bijiao++;
  292.                   n4++;
  293.                   if(n4==getCon){
  294.                       n4=n4-1;
  295.                   }
  296.               }
  297.               AutoAllModify[n1]="update "+name+" set "+inonef.toString()+" where "+key[n1]+";";
  298.               bijiao = 0;
  299.               inonef.delete(0,inonef.length());
  300.           }
  301.           //将组合好的SQL语句批量写入数据库
  302.               this.change = conn.createStatement();
  303.               for (int ins = 0; ins < AutoAllModify.length; ins++) {
  304.                  change.executeUpdate(AutoAllModify[ins]);
  305.               }
  306.           }catch(Exception e){
  307.               e.printStackTrace();
  308.           }
  309.         return AutoAllModify;
  310.     }
  311.       //执行查询返回结果集的方法,参数为查询语句
  312.    public ResultSet getStatement(String select)
  313.    { try{
  314.          this.runrs = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  315.          this.rs=runrs.executeQuery(select);
  316.        }catch(Exception e)
  317.        {
  318.            e.printStackTrace();
  319.        }
  320.        return rs;
  321.    }
  322.    //获得结果集中的数据的方法,并以二维数组纪录
  323.    public String[][] getResultContant(){
  324.        try{
  325.            ResultSetMetaData meta = rs.getMetaData();
  326.            rs.first();
  327.            int n=1;
  328.            while(rs.next()){
  329.                n++;
  330.            }
  331.            rs.first();
  332.            int getcount = meta.getColumnCount();
  333.            String get[][]= new String[n][getcount];
  334.            for(int h=0;h<n;h++){
  335.                for(int h1=0;h1<getcount;h1++){
  336.                    get[h][h1] = rs.getString((h1+1));
  337.                }
  338.                rs.next();
  339.            }
  340.            this.res=get;
  341.            rs.first();
  342.        }catch(Exception e){
  343.            e.printStackTrace();
  344.        }
  345.        return res;
  346.     }
  347.     //关闭连接和相关,释放资源
  348.     public void closeDB(){
  349.         try{
  350.             if (stmt != null) {
  351.                 stmt.close();
  352.                 stmt = null;
  353.             }
  354.             if (rs != null) {
  355.                 rs.close();
  356.                 rs = null;
  357.             }
  358.             if (runrs != null) {
  359.                 runrs.close();
  360.                 runrs = null;
  361.             }
  362.             if (del != null) {
  363.                 del.close();
  364.                 del = null;
  365.             }
  366.             if (change != null) {
  367.                change.close();
  368.                change = null;
  369.            }
  370.            if (conn != null) {
  371.                conn.close();
  372.                conn = null;
  373.            }
  374.         }catch(Exception e){
  375.             e.printStackTrace();
  376.         }
  377.      }
  378.      //此类到此结束,更待补充
  379. }