2013-09-23 24 views
1

我有一個Java應用程序從sql 2008數據庫中讀取記錄(對b讀取的記錄計數是可配置的)。 並處理它們,這是在無限循環中完成的,並且只在手動停止應用程序時停止。處理由網絡波動導致的讀超時

這裏im面臨的問題是,應用程序停止從數據庫獲取記錄,當我得到讀取超時錯誤。 我想這是因爲網絡波動。

從數據庫中讀取的代碼被寫入try catch塊。所以當錯誤發生時它會被記錄下來,但也會停止。 我不知道如何處理這種情況,並使應用程序不斷運行,儘管出現錯誤。 請讓我知道如何處理錯誤,以便我的應用程序繼續運行。

+1

怎麼樣保存光標,如果catch塊代碼被調用時,從光標的位置重新運行該功能? – Reinherd

+1

如果您添加更多代碼,答案可能會改善:) –

回答

0

在閱讀過程中,您應該將關於停止位置的信息存儲起來,並在無法繼續後再次設置連接。

像這樣:

boolean programRuns = true; // set this to false at the end 

public void doMyStuff() { 
    int myLastPosition = 0; 
    while(programRuns) { 
     try { 
      Connection con = /* open your connection */ 
      String statement = /* your statement */ + "WHERE id > " + myLastPosition; 
      PreparedStatement pstmt = /* prepare your statement */ 
      while(true) { 
       ResultSet rs = pstmt.executeQuery(); 
       myLastPosition = rs.getInt("id"); 
       /* do whatever you want with the result */ 
      } 
     } catch (Exception ex) { /* handle the exception */ } 
    } 
} 
+0

謝謝大家的回覆。問題已解決 – sonu

+0

@sonu如果我的解決方案解決了您的問題,請將其標記爲正確(答案左側爲鉤子)。如果不是,請自行發佈正確的答案。 –