让Java等待上一次尝试完成

让Java等待上一次尝试完成,java,connection,wait,etl,Java,Connection,Wait,Etl,我有一个从MySQL数据库中提取和清理数据的方法 该过程的下一步是将此数据移动到Oracle数据库 但是,在从MySQL中提取和清理数据的过程中,我与oracle db有一个coninous连接。这不是必需的,并且极大地减慢了提取过程 如何让java等到提取/清理过程完成后再连接到Oracle 这是我的代码: public void ConvertFiles() { try { connectToDB(); RawFile tempFile = ne

我有一个从MySQL数据库中提取和清理数据的方法

该过程的下一步是将此数据移动到Oracle数据库

但是,在从MySQL中提取和清理数据的过程中,我与oracle db有一个coninous连接。这不是必需的,并且极大地减慢了提取过程

如何让java等到提取/清理过程完成后再连接到Oracle

这是我的代码:

public void ConvertFiles() {

    try {

        connectToDB();

        RawFile tempFile = new RawFile(super.mFileType);
        try {
            ArrayList<String> values = new ArrayList<String>();

            try {
                Statement stmt = conn.createStatement();
                ResultSet result = stmt.executeQuery("SELECT * FROM coffeedata");
                int ii = 0;
                while (result.next()) {
                    ii++;
                    System.out.print("Reading Row:" + ii + "/" + 41429 + "\n");
                    mStore = (result.getString(1));
                    mCategory = (result.getString(2));
                    mName = (result.getString(3));

                    // Add columns 2007 Q1 - Q4 t/m 2009 Q1 - Q2 to ArrayList   


                    for (int i = 4; i < 14; i++) {
                        values.add("" + result.getInt(i));

                    }
                    tempFile.addData(new SQLData(mCategory, mName, values, mStore));

                    try {
                        OracleController.DataToOracle();

                    } catch (Exception e) {
                        System.out.println(e.getMessage());

                    }
                }

                tempFile.CleanCategory();
                mRawFiles.add(tempFile);

            } catch (Exception e) {
                System.out.println(e.getMessage());
                closeDBConnection();

            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
            //return values;
            //System.out.println(values);


        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

重构代码并将
try
块放在要等待的
try-catch-finally
之后

try{
    //block that you need to excecute before
} catch { ... }
// Than your block
try {
     OracleController.DataToOracle();
 } catch (Exception e)


                    }

您需要一个连接来“提取并清理”数据库中的数据是的,但问题是我正在维护与Oracle db的连接,而这不是必需的。我只需要在提取/清洗过程完成后进行连接坦率地说,很难在代码和解释之间进行比较。但我完全不知道与Oracle建立开放连接会对提取过程的速度产生什么影响。我认为您做出了错误的假设;然后提取过程进行得非常快。现在就像在读第1排。。。。。。阅读行:2当注释掉那行时,它就像阅读行:1。。。阅读行:不到一秒钟内达到1000。尝试从未达到。没有可用的可执行位置
try{
    //block that you need to excecute before
} catch { ... }
// Than your block
try {
     OracleController.DataToOracle();
 } catch (Exception e)


                    }