让Java等待上一次尝试完成
我有一个从MySQL数据库中提取和清理数据的方法 该过程的下一步是将此数据移动到Oracle数据库 但是,在从MySQL中提取和清理数据的过程中,我与oracle db有一个coninous连接。这不是必需的,并且极大地减慢了提取过程 如何让java等到提取/清理过程完成后再连接到Oracle 这是我的代码:让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
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)
}