Mysql、达梦工具类

  1. Mysql连接工具

 import java.sql.*;
 
 public class MysqlJdbcUtil {
 
     private String url;
 
     private String user;
 
     private String pwd;
 
     public MysqlJdbcUtil(String url, String user, String pwd){
         this.url = url;
         this.user = user;
         this.pwd = pwd;
    }
 
     public Connection getConnection(){
         Connection con = null;
         try {
             Class.forName("com.mysql.cj.jdbc.Driver");
             con= DriverManager.getConnection(url,user,pwd);
        } catch (ClassNotFoundException | SQLException e) {
             e.printStackTrace();
        }
         return con;
    }
 
     public PreparedStatement getPreparedStatement(Connection con, String sql){
         PreparedStatement ps = null;
         try {
             ps = con.prepareStatement(sql);
        }catch (SQLException e){
             e.printStackTrace();
        }
         return ps;
    }
 
     public void closeObj(ResultSet rs, PreparedStatement ps, Connection con){
         try {
             if (rs != null){
                 rs.close();
            }
             if (ps != null){
                 ps.close();
            }
             if (con != null){
                 con.close();
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }
    }
 }
  1. Mysql查询工具

 import cn.deltaphone.dragon.modular.ops.predata.model.dto.MetaDataDTO;
 import cn.deltaphone.dragon.modular.ops.predata.utils.MysqlJdbcUtil;
 import org.apache.commons.compress.utils.Lists;
 
 import java.sql.*;
 import java.util.List;
 
 /**
  * @ClassName MysqlQueryTool
  */
 public class MysqlQueryTool2 {
 
     private String name;
 
     private Integer type;
 
     private String url;
 
     private String user;
 
     private String pwd;
 
     public MysqlQueryTool2(MetaDataDTO dto){
         this.name = dto.getName();
         this.url = dto.getJdbcUrl();
         this.user = dto.getJdbcUser();
         this.pwd = dto.getJdbcPwd();
         this.type = dto.getSourceType();
    }
 
     /**
       *@Description: 获取所有字段
       */
     public List<String> getColumns(String tableName) {
         List<String> list = Lists.newArrayList();
         MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd);
         Connection con = mysqlJdbcUtil.getConnection();
         String sql = "SELECT COLUMN_NAME FROM information_schema.`COLUMNS` WHERE table_name = '"+tableName+"'";
         PreparedStatement ps = mysqlJdbcUtil.getPreparedStatement(con, sql);
         ResultSet rs = null;
         try {
             rs = ps.executeQuery();
             while (rs.next()){
                 list.add(rs.getString("COLUMN_NAME"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             mysqlJdbcUtil.closeObj(rs,ps,con);
        }
         return list;
    }
 
     /**
       *@Description: 获取所有表名
       */
     public List<String> getTableNames(String tableSchema) {
         List<String> list = Lists.newArrayList();
         MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd);
         Connection con = mysqlJdbcUtil.getConnection();
         ResultSet rs = null;
         try {
             DatabaseMetaData metaData = con.getMetaData();
             rs = metaData.getTables(tableSchema, null, null, null);
             while (rs.next()){
                 list.add(rs.getString("TABLE_NAME"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             mysqlJdbcUtil.closeObj(rs,null,con);
        }
 
         return list;
 
    }
 
     /**
      *@Description: 获取Schema
      */
     public List<String> getTableSchema() {
         List<String> list = Lists.newArrayList();
         MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd);
         Connection con = mysqlJdbcUtil.getConnection();
         ResultSet rs =null;
         try {
             DatabaseMetaData metaData = con.getMetaData();
             rs = metaData.getCatalogs();
             while (rs.next()){
                 list.add(rs.getString("TABLE_CAT"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             mysqlJdbcUtil.closeObj(rs,null,con);
        }
 
         return list;
    }
 
     // 获取表的时间跨度
     public String getTimeSpan(String schema){
         MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd);
         Connection con = mysqlJdbcUtil.getConnection();
         String sql = "SELECT (SELECT CREATE_TIME FROM information_schema.`TABLES` " +
                 "where TABLE_SCHEMA = '"+schema+"' and CREATE_TIME IS NOT NULL ORDER BY CREATE_TIME limit 1 ) as CREATE_TIME," +
                 "(SELECT UPDATE_TIME FROM information_schema.`TABLES` " +
                 "where TABLE_SCHEMA = '"+schema+"' and UPDATE_TIME IS NOT NULL ORDER BY CREATE_TIME DESC limit 1 ) as UPDATE_TIME " +
                 "from information_schema.`TABLES` LIMIT 1;";
         PreparedStatement ps = mysqlJdbcUtil.getPreparedStatement(con, sql);
         ResultSet rs = null;
         String str = "";
         try {
             rs = ps.executeQuery();
             while (rs.next()){
                 str += rs.getString("CREATE_TIME");
                 str += " - ";
                 str += rs.getString("UPDATE_TIME");
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace(); 
      }finally { 
           mysqlJdbcUtil.closeObj(rs,ps,con); 
      } 
       return str; 
  } 
​ 
   // 获取数据总数 
   public Integer getDataRows(String schema){ 
       MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd); 
       Connection con = mysqlJdbcUtil.getConnection(); 
       String sql = "SELECT sum(TABLE_ROWS) SUM FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '"+schema+"'"; 
       PreparedStatement ps = mysqlJdbcUtil.getPreparedStatement(con, sql); 
       ResultSet rs = null; 
       int i = 0; 
       try { 
           rs = ps.executeQuery(); 
           while (rs.next()){ 
               i = rs.getInt("SUM"); 
          } 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           mysqlJdbcUtil.closeObj(rs,ps,con); 
      } 
       return i; 
  } 
​ 
   // 根据sql 获取字段集合 
   public List<String> getColumnsBySql(String sql) { 
       List<String> list = Lists.newArrayList(); 
​ 
       MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd); 
       Connection con = mysqlJdbcUtil.getConnection(); 
       sql = sql.replace(";",""); 
       String querySql = sql.concat(" where 1=0"); 
       if (sql.contains(")")) { 
           if (sql.substring(sql.indexOf(")")).contains("where")) { 
               querySql = sql.concat(" and 1=0"); 
          }else { 
               if (sql.contains("where")) { 
                   querySql = sql.concat(" and 1=0"); 
              } 
          } 
      } 
       PreparedStatement ps = mysqlJdbcUtil.getPreparedStatement(con, querySql); 
       ResultSet rs = null; 
       try { 
           rs = ps.executeQuery(); 
           ResultSetMetaData metaData = rs.getMetaData(); 
           int columnCount = metaData.getColumnCount(); 
           for (int i = 1; i <= columnCount; i++) { 
               list.add(metaData.getColumnName(i)); 
          } 
​ 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           mysqlJdbcUtil.closeObj(rs,ps,con); 
      } 
       return list; 
  } 
​ 
   // 根据tableName、字段 获取对于的数据 
   public List<String> getListByfields(String tableName, String fields){ 
       List<String> list = Lists.newArrayList(); 
​ 
       MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd); 
       Connection con = mysqlJdbcUtil.getConnection(); 
       String sql = "select "+fields+" from "+tableName; 
       String[] split = fields.split(","); 
       int i = split.length; 
       PreparedStatement ps = mysqlJdbcUtil.getPreparedStatement(con, sql); 
       ResultSet rs = null; 
       try { 
           rs = ps.executeQuery(); 
           while (rs.next()){ 
               String str = ""; 
               for (int j = 1; j <= i; j++) { 
                   str +=",'" + rs.getObject(j)+ "'"; 
              } 
               list.add(str.substring(1)); 
          } 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           mysqlJdbcUtil.closeObj(rs,ps,con); 
      } 
       return list; 
  } 
​ 
   // 插入已知数据 
   public Integer insertField(String tableName, String fields, List<String> list){ 
       int k = 0; 
       MysqlJdbcUtil mysqlJdbcUtil = new MysqlJdbcUtil(url,user,pwd); 
       Connection con = mysqlJdbcUtil.getConnection(); 
​ 
       String str = ""; 
       for (String s : list) { 
           String[] split = s.split(","); 
           String val = "("; 
           for (int i = 0; i < split.length; i++) { 
               val += split[i] + ","; 
          } 
           val = val.substring(0, val.length()-1); 
           val += "),"; 
           str += val; 
      } 
       String sql = "insert into "+tableName+" ("+fields+") values "+str.substring(0,str.length()-1); 
       PreparedStatement ps = null; 
       try { 
           ps = con.prepareStatement(sql); 
           k = ps.executeUpdate(); 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           mysqlJdbcUtil.closeObj(null,ps,con); 
      } 
       return k; 
  } 
​ 
}
 import lombok.Data;
 
 @Data
 public class MetaDataDTO {
 
     private String name;
 
     private Integer sourceType;
 
     private String jdbcUrl;
 
     private String jdbcUser;
 
     private String jdbcPwd;
 }

 

  1. 达梦7/8(别的版本没测过) 通用连接工具

 import java.sql.*;
 
 /**
  * @ClassName JdbcUtil
  */
 public class DMJdbcUtil {
 
     private String url;
 
     private String user;
 
     private String pwd;
 
     public DMJdbcUtil(String url, String user, String pwd){
         this.url = url;
         this.user = user;
         this.pwd = pwd;
    }
 
 
     public Connection getConnection(){
         Connection con = null;
         try {
             Class.forName("dm.jdbc.driver.DmDriver");
             con= DriverManager.getConnection(url,user,pwd);
        } catch (ClassNotFoundException | SQLException e) {
             e.printStackTrace();
        }
         return con;
    }
 
     public PreparedStatement getPreparedStatement(Connection con, String sql){
         PreparedStatement ps = null;
         try {
             ps = con.prepareStatement(sql);
        }catch (SQLException e){
             e.printStackTrace();
        }
         return ps;
    }
 
     public void closeObj(ResultSet rs, PreparedStatement ps, Connection con){
         try {
             if (rs != null){
                 rs.close();
            }
             if (ps != null){
                 ps.close();
            }
             if (con != null){
                 con.close();
            }
 
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }
    }
 }

 

  1. 达梦查询工具

 import cn.deltaphone.dragon.modular.ops.predata.model.dto.MetaDataDTO;
 import cn.deltaphone.dragon.modular.ops.predata.utils.DMJdbcUtil;
 import org.apache.commons.compress.utils.Lists;
 
 import java.sql.*;
 import java.util.List;
 
 /**
  * @ClassName DMQueryTool
  */
 public class DMQueryTool {
 
     private String name;
 
     private Integer type;
 
     private String url;
 
     private String user;
 
     private String pwd;
 
     public DMQueryTool(MetaDataDTO dto){
         this.name = dto.getName();
         this.url = dto.getJdbcUrl();
         this.user = dto.getJdbcUser();
         this.pwd = dto.getJdbcPwd();
         this.type = dto.getSourceType();
    }
 
     /**
       *@Description: 获取所有字段
       */
     public List<String> getColumns(String tableName) {
         List<String> list = Lists.newArrayList();
         DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url, user, pwd);
         Connection con = dmJdbcUtil.getConnection();
         String sql = "select COLUMN_NAME from all_tab_columns where Table_Name='"+tableName+"'";
         PreparedStatement ps = dmJdbcUtil.getPreparedStatement(con, sql);
         ResultSet rs = null;
         try {
             rs = ps.executeQuery();
             while (rs.next()){
                 list.add(rs.getString("COLUMN_NAME"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             dmJdbcUtil.closeObj(rs,ps,con);
        }
         return list;
    }
 
     /**
      *@Description: 根据数据源id获取所有表名
      */
     public List<String> getTableNames(String tableSchema) {
         List<String> list = Lists.newArrayList();
         DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url,user,pwd);
         Connection con = dmJdbcUtil.getConnection();
         String sql = "select TABLE_NAME from dba_tables where owner='"+tableSchema+"'";
         PreparedStatement ps = dmJdbcUtil.getPreparedStatement(con, sql);
         ResultSet rs = null;
         try {
             rs = ps.executeQuery();
             while (rs.next()){
                 list.add(rs.getString("TABLE_NAME"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             dmJdbcUtil.closeObj(rs,null,con);
        }
         return list;
    }
 
     /**
      *@Description: 获取Schema
      */
     public List<String> getTableSchema() {
         List<String> list = Lists.newArrayList();
         DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url,user,pwd);
         Connection con = dmJdbcUtil.getConnection();
         String sql = "select distinct owner from dba_objects";
         PreparedStatement ps = dmJdbcUtil.getPreparedStatement(con, sql);
         ResultSet rs = null;
         try {
             rs = ps.executeQuery();
             while (rs.next()){
                 list.add(rs.getString("OWNER"));
            }
        } catch (SQLException throwables) {
             throwables.printStackTrace();
        }finally {
             dmJdbcUtil.closeObj(rs,ps,con);
        }
         return list;
    }
 
     // 根据tableName、字段 获取对于的数据
     public List<String> getListByfields(String tableName, String fields){
         List<String> list = Lists.newArrayList();
         String schema = "";
         if (url.contains("?")){
             schema = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("?"));
        }else {
             schema = url.substring(url.lastIndexOf("/") + 1, url.length());
        }
         DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url,user,pwd);
         Connection con = dmJdbcUtil.getConnection();
         String sql = "select "+fields+" from \"" + schema +"\".\""+ tableName + "\""; 
       String[] split = fields.split(","); 
       int i = split.length; 
       PreparedStatement ps = dmJdbcUtil.getPreparedStatement(con, sql); 
       ResultSet rs = null; 
       try { 
           rs = ps.executeQuery(); 
           while (rs.next()){ 
               String str = ""; 
               for (int j = 1; j <= i; j++) { 
                   str +=",'" + rs.getObject(j)+ "'"; 
              } 
               list.add(str.substring(1)); 
          } 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           dmJdbcUtil.closeObj(rs,ps,con); 
      } 
       return list; 
  } 
​ 
   // 插入已知数据 
   public Integer insertField(String tableName, String fields, List<String> list){ 
       int k = 0; 
       DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url,user,pwd); 
       Connection con = dmJdbcUtil.getConnection(); 
​ 
       String str = ""; 
       for (String s : list) { 
           String[] split = s.split(","); 
           String val = "("; 
           for (int i = 0; i < split.length; i++) { 
               val += split[i] + ","; 
          } 
           val = val.substring(0, val.length()-1); 
           val += "),"; 
           str += val; 
      } 
       String schema = ""; 
       if (url.contains("?")){ 
           schema = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("?")); 
      }else { 
           schema = url.substring(url.lastIndexOf("/") + 1, url.length()); 
      } 
​ 
       String sql = "insert into \"" + schema +"\".\"" +tableName+"\" ("+fields+") values "+str.substring(0,str.length()-1); 
       PreparedStatement ps = null; 
       try { 
           ps = con.prepareStatement(sql); 
           k = ps.executeUpdate(); 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           dmJdbcUtil.closeObj(null,ps,con); 
      } 
       return k; 
  } 
​ 
   // 根据sql 获取字段集合 
   public List<String> getColumnsBySql(String sql) { 
       List<String> list = Lists.newArrayList(); 
​ 
       DMJdbcUtil dmJdbcUtil = new DMJdbcUtil(url,user,pwd); 
       Connection con = dmJdbcUtil.getConnection(); 
       sql = sql.replace(";",""); 
       String querySql = sql.concat(" where 1=0"); 
       if (sql.contains(")")) { 
           if (sql.substring(sql.indexOf(")")).contains("where")) { 
               querySql = sql.concat(" and 1=0"); 
          }else { 
               if (sql.contains("where")) { 
                   querySql = sql.concat(" and 1=0"); 
              } 
          } 
      } 
       PreparedStatement ps = dmJdbcUtil.getPreparedStatement(con, querySql); 
       ResultSet rs = null; 
       try { 
           rs = ps.executeQuery(); 
           ResultSetMetaData metaData = rs.getMetaData(); 
           int columnCount = metaData.getColumnCount(); 
           for (int i = 1; i <= columnCount; i++) { 
               list.add(metaData.getColumnName(i)); 
          } 
​ 
      } catch (SQLException throwables) { 
           throwables.printStackTrace(); 
      }finally { 
           dmJdbcUtil.closeObj(rs,ps,con); 
      } 
       return list; 
  } 
}

 

posted @ 2021-09-26 19:35  河马小海豚  阅读(120)  评论(0)    收藏  举报