用ArrayList做容器,用来存放数据!
然后写一个接口,接口里面定义2个方法,一个是取数据的getfrom(),一个是放数据的setto();
然后定期用ArrayList容器调用getfrom()从oracel中取数据,接着就调用setto()把数据送到mysql中!

解决方案 »

  1.   

    package DataTransfer;import java.sql.*;
    import java.lang.Exception;
    import java.util.ArrayList;
    import java.util.List;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2005</p>
     * <p>Company: networksh</p>
     * @author duantang
     * @version 1.0
     */public class DataOperating {
        public DataOperating() {
        }    /*
         *   根据用户提供的Oracle数据库的ip,用户名,密码进行数据库的连接
         *   从oracle数据库表中提取全部记录
         *   返回类型:ArrayList
         */
        public List EduceFormOracle(String ip, String sUsr, String sPwd,
                                    String table) throws Exception {
            List queryResult = new ArrayList();
            List recordLine = new ArrayList();
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("jdbc:oracle:thin:@" +
                ip + ":1521:ORCL", sUsr, sPwd);
            Statement stmt = con.createStatement();
            String sql = "select * from " + table;
            ResultSet rs = stmt.executeQuery(sql);        ResultSetMetaData rsmd = rs.getMetaData();
            int numCols = rsmd.getColumnCount();
            boolean more = rs.next();
            while (more) {
                for (int i = 1; i <= numCols; i++) {
                    recordLine.add(rs.getObject(i));
                }
                queryResult.add(recordLine);
                more = rs.next();
            }        rs.close();
            stmt.close();
            con.close();        return queryResult;    }    /*
         *   根据用户提供的MySql数据库的ip,用户名,密码进行数据库的连接
         *   把ResultSet结果集插入到MySql数据库中
         *   无返回值
         */    public void InsertToMysql(String ip, String sUsr, String sPwd,
                                  List rs, String table) throws Exception {
            Class.forName("org.gjt.mm.mysql.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://" + ip +
                ":3306/myDatabaseName", sUsr, sPwd);
            Statement stmt = con.createStatement();//        Object[] array = new Object[rs.size()];
    //       rs.toArray(array);
            for (int i = 0; i < rs.size(); i++) {
                List recordLine = (List) rs.get(i);
                String V0 = (String) recordLine.get(0);
                String V1 = (String) recordLine.get(1);
                String V2 = (String) recordLine.get(2);
                String V3 = (String) recordLine.get(3);
                String V4 = (String) recordLine.get(4);
                String sql = "insert into" + table + "( T1, T2, T3, T4, T5) VALUES ("+V0+","+ V1+","+ V2+","+ V3+","+ V4+")";
                stmt.executeUpdate(sql);
            }
            stmt.close();
            con.close();    }
    }
      

  2.   

    以上是我写的两个接口,就如楼上所说,一个取数据,一个存数据,单总觉得很繁琐,据说用JMX可以很好解决此类问题,有没有人知道呀?还有呀,对于我写的第二个方法里面的循环部分,有没有高人有更好的办法没有?我感觉是不得已之计!多谢参与!