2012-07-05 58 views
0

我需要實現如何實現與Oracle驅動程序classes12一起使用的isValid連接?

boolean isValid(int timeout) 

像JDK6爲java.sql.Connection中。但應該使用Oracle瘦驅動程序classes12。 很明顯,我可以運行小查詢,但超時是什麼?我應該爲它創建單獨的線程嗎? 謝謝。

+0

爲什麼不直接使用Oracle JDBC Driver for Java 6? – 2012-07-05 18:28:45

+0

我無法選擇。它不依賴於我。如果可以的話 - 我從來不問這個問題。 – user710818 2012-07-05 18:30:38

+0

我不知道你的意思。你爲什麼不能使用它?考慮到您可以修改Java 1.2 Oracle JDBC驅動程序,以便您可以在Java 6下使用它,這是愚蠢的,因爲您只能獲得Java 6驅動程序。 – 2012-07-05 18:34:18

回答

1

對於OJDB7:

的isValid(INT超時) - 是對方法pingDatabase一個包裝(int i)以
pingDatabase() - 使查詢 「SELECT 'X' FROM DUAL」。
pingDatabase(int i) - 在單獨的線程中進行相同的查詢。

答案 - 是的,你必須在一個單獨的線程中提出一個小的請求。

try { 
    Thread thread = new Thread(new Runnable() { 
     public void run() { 
      try { 
       result = ...make query and verify result 
      } catch(Throwable throwable) { 
       return false; 
      } 
     } 
    }); 
    thread.start(); 
    thread.join(timeout); 
    return result; 
catch(InterruptedException interruptedexception) { 
    return false; 
} 
相關問題