2012-07-06 124 views
1

我使用JDBC連接到Oracle數據庫。應用程序運行時間很長。所以我需要如果連接沒有被服務器關閉,沒有發生網絡斷開連接等。 我應該運行小型查詢還是以另一種方式存在?使用isValid我不能,因爲這不受jdbc驅動程序支持。如何檢查連接是否存活?

回答

4

運行一個簡單的查詢,如

SELECT 1 
    FROM dual 

的東西是最萬無一失的方法。這是大多數Java EE應用服務器用來驗證連接池中的連接仍處於活動狀態的功能。

+0

不能這樣,如果不從服務器查詢答案會運行很長時間? – user710818 2012-07-06 03:19:17

+0

@ user710818 - 在絕大多數情況下,假設過去成功打開連接,這將立即檢測到連接中斷或者更多或更少立即對數據庫執行查詢。如果在網絡失去將數據包路由到數據庫服務器的能力後立即發出查詢,數據包可能需要一些時間才能超時。但這很罕見,而且你可能做的任何事情都不可能更快地失敗。 – 2012-07-06 03:24:37