`
Jameslyy
  • 浏览: 401917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个数据库连接Java工具类和数据迁移类

阅读更多
java 代码
 
  1. /**  
  2.  *   
  3.  * @author Administrator  
  4.  *   
  5.  */  
  6. public class DataBaseManager {   
  7.   
  8.     private String driver = "com.mysql.jdbc.Driver";   
  9.   
  10.     private Connection conn = null;   
  11.     private Statement statement = null;   
  12.   
  13.     private String path = "";   
  14.     // jdbc:oracle:thin:@10.1.1.1:1521:mydb   
  15.     // jdbc:mysql://10.1.1.1:3306/
  16.     // mydb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true   
  17.     private String user = "";   
  18.     private String pwd = "";   
  19.   
  20.     /**  
  21.      * Constructor  
  22.      *   
  23.      */  
  24.     public DataBaseManager() {   
  25.         init();   
  26.     }   
  27.   
  28.     public DataBaseManager(String driver, String url, String user, String pwd) {   
  29.         this.driver = driver;   
  30.         this.path = url;   
  31.         this.user = user;   
  32.         this.pwd = pwd;   
  33.   
  34.         init();   
  35.     }   
  36.   
  37.     private void init() {   
  38.         //   
  39.         try {   
  40.             Class.forName(driver);   
  41.         } catch (ClassNotFoundException e) {   
  42.             // TODO Auto-generated catch block   
  43.             e.printStackTrace();   
  44.         }   
  45.   
  46.         try {   
  47.             conn = java.sql.DriverManager.getConnection(path, user, pwd);   
  48.             statement = conn.createStatement();   
  49.         } catch (SQLException e) {   
  50.             // TODO Auto-generated catch block   
  51.             System.out.println("can not connect db!");   
  52.             e.printStackTrace();   
  53.         }   
  54.     }   
  55.   
  56.     /**  
  57.      * close Connection  
  58.      *   
  59.      * @param sql  
  60.      * @return  
  61.      */  
  62.     public ResultSet getResultSet(String sql) {   
  63.         ResultSet rs = null;   
  64.         try {   
  65.             rs = statement.executeQuery(sql);   
  66.         } catch (SQLException e) {   
  67.             // TODO Auto-generated catch block   
  68.             e.printStackTrace();   
  69.         }   
  70.         return rs;   
  71.     }   
  72.   
  73.     /**  
  74.      *   
  75.      * @param hql  
  76.      * @return  
  77.      */  
  78.     public boolean exe(String hql) {   
  79.         try {   
  80.             return statement.execute(hql);   
  81.         } catch (SQLException e) {   
  82.             // TODO Auto-generated catch block   
  83.             e.printStackTrace();   
  84.         }   
  85.   
  86.         return false;   
  87.     }   
  88.   
  89.     /**  
  90.      * close Connection  
  91.      *   
  92.      */  
  93.     public void closeConnection() {   
  94.         if (conn != null)   
  95.             try {   
  96.                 conn.close();   
  97.             } catch (SQLException e) {   
  98.                 // TODO Auto-generated catch block   
  99.                 e.printStackTrace();   
  100.             }   
  101.         if (statement != null)   
  102.             try {   
  103.                 statement.close();   
  104.             } catch (SQLException e) {   
  105.                 // TODO Auto-generated catch block   
  106.                 e.printStackTrace();   
  107.             }   
  108.     }   
  109. }  
java 代码
 
  1. import java.io.BufferedReader;   
  2. import java.io.File;   
  3. import java.io.FileReader;   
  4. import java.io.IOException;   
  5. import java.util.ArrayList;   
  6. import java.util.List;   
  7.   
  8. public class DataTransferFromSqlScript {   
  9.     // private String dateFormat = "dd-mm-yyyy hh24:mi:ss.ff";   
  10.   
  11.     // private DataBaseManager dm1 = new   
  12.     // DataBaseManager("oracle.jdbc.driver.OracleDriver",   
  13.     // "jdbc:oracle:thin:@10.1.1.1:1521:mydb", "username", "pwd");   
  14.     // //   
  15.     // private DataBaseManager dm2 = new   
  16.     // DataBaseManager("oracle.jdbc.driver.OracleDriver",   
  17.     // "jdbc:oracle:thin:@10.1.1.1:1521:mydb", "username", "pwd");   
  18.   
  19.     // private DataBaseManager dm1 = new DataBaseManager(   
  20.     // "com.mysql.jdbc.Driver",   
  21.     // "jdbc:mysql://10.1.1.1:3306/
  22.     // mydb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true",   
  23.     // "username", "pwd");   
  24.   
  25.     private DataBaseManager dm1 = new DataBaseManager(   
  26.             "com.mysql.jdbc.Driver",   
  27.             "jdbc:mysql://10.1.1.1:3306/"
  28.             + "mydb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true",   
  29.             "username""pwd");   
  30.   
  31.     public void readAndSaveResumeDate() {   
  32.   
  33.         System.out.println("Translate date starting......");   
  34.   
  35.         List<string></string> files = new ArrayList<string></string>();   
  36.         files.add("c://dbtable1.sql");   
  37.         files.add("c://dbtable2.sql");   
  38.   
  39.         for (String fileName : files) {   
  40.             File f = new File(fileName);   
  41.   
  42.             List<string></string> sqls = new ArrayList<string></string>();   
  43.   
  44.             try {   
  45.                 FileReader in = new FileReader(f);   
  46.                 BufferedReader br = new BufferedReader(in);   
  47.                 String s;   
  48.                 String s1 = "";   
  49.                 while ((s = br.readLine()) != null) {   
  50.                     if (s.startsWith("insert into")) {   
  51.                         s1 = s;   
  52.                     } else if (s.startsWith("values (")) {   
  53.   
  54.                         s = getSql(s);   
  55.   
  56.                         sqls.add((s1 + s).replace(";"""));   
  57.                     }   
  58.                 }   
  59.                 br.close();   
  60.                 in.close();   
  61.             } catch (IOException e) {   
  62.                 // Auto-generated catch block   
  63.                 e.printStackTrace();   
  64.             }   
  65.   
  66.             // Object[] sqlsSorted = sortSqls(sqls, -1);   
  67.   
  68.             Object[] sqlsSorted = sqls.toArray();   
  69.   
  70.             System.out.println(fileName + " total: " + sqlsSorted.length);   
  71.   
  72.             for (Object sql : sqlsSorted) {   
  73.                 System.out.println(sql);   
  74.   
  75.                 //    
  76.                 dm1.exe((String) sql);   
  77.             }   
  78.   
  79.             System.out.println(fileName + " total: " + sqlsSorted.length);   
  80.         }   
  81.     }   
  82.   
  83.     /**  
  84.      *   
  85.      * @param positions  
  86.      */  
  87.     private static void swap(Object[] positions, int i, int j) {   
  88.         Object tem = positions[i];   
  89.         positions[i] = positions[j];   
  90.         positions[j] = tem;   
  91.     }   
  92.   
  93.     /**  
  94.      * n > 0 or n <= 0  
  95.      *   
  96.      * @param positions  
  97.      * @param n  
  98.      */  
  99.     public static Object[] sortSqls(List<string></string> sqls, int n) {   
  100.   
  101.         Object[] array = sqls.toArray();   
  102.   
  103.         for (int i = 0; i < array.length; i++) {   
  104.             for (int j = array.length - 1; j > i; j--) {   
  105.                 if (n > 0) {   
  106.                     if (getId((String) array[j]) > getId((String) array[j - 1]))   
  107.                         swap(array, j, j - 1);   
  108.                 } else if (n < 0) {   
  109.                     if (getId((String) array[j]) < getId((String) array[j - 1]))   
  110.                         swap(array, j, j - 1);   
  111.                 }   
  112.             }   
  113.         }   
  114.   
  115.         return array;   
  116.     }   
  117.   
  118.     /**  
  119.      *   
  120.      * @param sql  
  121.      * @return  
  122.      */  
  123.     public static int getId(String sql) {   
  124.         int start = sql.indexOf("values (");   
  125.         String s = sql.substring(start).split(",")[0].substring(8);   
  126.   
  127.         return Integer.parseInt(s);   
  128.     }   
  129.   
  130.     public String getSql(String s) {   
  131.         int i = s.indexOf("to_timestamp");   
  132.         if (i > 0) {   
  133.             return s.replace(s.substring(i, i + 70), "null");   
  134.         } else  
  135.             return s;   
  136.     }   
  137.   
  138.     public static void main(String[] args) {   
  139.   
  140.         DataTransferFromSqlScript rd = new DataTransferFromSqlScript();   
  141.         rd.readAndSaveResumeDate();   
  142.   
  143.         rd.dm1.closeConnection();   
  144.     }   
  145. }  
分享到:
评论
5 楼 zyu67 2017-11-17  
这个类运行不起来呀  这类如何导出数据呀
4 楼 di1984HIT 2013-12-26  
鞋的不错啊。呵呵额
3 楼 Jameslyy 2009-07-04  
jackytang520 写道
直接用insert的话,在大数据量的情况下,产生大量日志问题,效率也低,我也在想这方面的办法

可以考虑批量保存数据!
2 楼 jackytang520 2009-07-04  
直接用insert的话,在大数据量的情况下,产生大量日志问题,效率也低,我也在想这方面的办法
1 楼 dd2086 2008-04-27  
  不错,加油,能写成工具类就好了。

相关推荐

Global site tag (gtag.js) - Google Analytics