我有這種情況。我將在服務器中觸發一個作業,一旦作業被觸發,一個條目將被寫入Execution_status_code爲1的作業表中。我需要等待一段時間,比如5分鐘,然後重新檢查Execution_status_code的值。只要值更改爲2,我需要進一步處理。在循環中執行SQL查詢
我正在使用現有連接連接到數據庫。我需要執行SQL,如果SQL輸出正在進行中,我需要等待一段時間,然後再執行語句。直到SQL輸出成功爲止,然後繼續等待。
下面是我試過的代碼。
Thread t = new Thread();
java.sql.Connection conn_javaComp = (java.sql.Connection)globalMap.get("conn_tNetezzaConnection_1");
java.sql.Statement st = null;
java.sql.ResultSet rs = null;
String check = null;
String dbquery_javaComp = "select case when EXECUTION_STATUS_CODE = 2 then 'Success' when EXECUTION_STATUS_CODE = 1 then 'In progress' else 'Failure' end as EXECUTION_STATUS_CODE from JOB_BKUP_NCR where JOB_TYPE_CODE="+context.JobTypeCode+" and Load_id = (select max(load_id) from JOB_BKUP_NCR where job_type_code="+context.JobTypeCode+") and START_DATETIME = (select max(START_DATETIME) from JOB_BKUP_NCR where job_type_Code="+context.JobTypeCode+")";
try
{
do
{
st = conn_javaComp.createStatement();
rs = st.executeQuery(dbquery_javaComp);
if(rs.next())
{
check = rs.getString(1);
System.out.println(check);
if (check.equalsIgnoreCase("In Progress"))
{
t.sleep(1000);
System.out.println("thread executed1");
System.out.println(dbquery_javaComp);
System.out.println(check);
}
}
else {
System.out.println(" No data found");
}
}while (!"Success".equals(check));
}
catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null)
rs.close();
if(st!= null)
st.close();
}
catch (Exception e1) {
e1.printStackTrace();
}
}
我得到的輸出是'進行中'。即使在更改數據庫中的值後,循環仍在進行中。我不確定我在做錯什麼。有什麼建議麼?
它工作。非常感謝。 :) –