6
A
回答
2
通常,連接池也會使用Connection.isClosed()方法來檢查連接是否仍然有效。問題是並非所有JDBC驅動程序都能正確處理此調用。所以我假設有一些簡單的檢查陳述就像RealHowTo所說的那樣。對於Oracle,他已經提到了「SELECT 1 FROM Dual」,它應該始終對Oracle數據庫成功。我認爲對於不同的數據庫有類似的查詢。我記得在之前的項目中,我們也實現了一個自己的連接池,它使用了這種驗證查詢。
8
喜歡的東西:
Statement stmt = null;
ResultSet rs =null;
try {
stmt = conn.createStatement();
// oracle
rs = stmt.executeQuery("SELECT 1 FROM Dual");
// others
// rs = stmt.executeQuery("SELECT 1");
if (rs.next())
return true; // connection is valid
}
catch (SQLException e) {
// TODO : log the exception ...
return false;
}
finally {
if (stmt != null) stmt.close();
if (rs != null) rs.close();
}
注意的是,如果連接是從連接池(在例如應用服務器),未來則池可以有一個機制來檢查連接是否有效。使用BEA,您可以在「測試保留」屬性中指定SELECT。
如果你正在開發你自己的游泳池,那麼你可能想看看別人是怎麼做的(例如Proxool)。
1
1
使用pingDatabase(int timeout) 因爲9.0.1
相關問題
- 1. 如何以編程方式打開「網絡連接」窗口
- 2. 以編程方式打開互聯網連接(Android)
- 3. 以編程方式檢查連接到設備的耳機嗎?
- 4. 以編程方式檢查未連接的分支
- 5. 如何以編程方式檢查鍵盤是否連接?
- 6. 以編程方式連接或檢測iOS中的某個WiFi?
- 7. 以編程方式在Windows CE中撥打現有連接?
- 8. 以編程方式在WebView中打開鏈接
- 9. 以編程方式在Linux中斷開並重新連接ttyUSB0
- 10. 以編程方式打開collapsible div
- 11. 以編程方式打開primeng日曆
- 12. 以編程方式打開藍牙
- 13. Postgres以編程方式打開log_statement
- 14. 如何以編程方式打開GPS
- 15. 以編程方式打開radlistpicker彈出
- 16. 以編程方式打開窗體
- 17. 以編程方式打開CD托盤
- 18. Monkeyrunner以編程方式打開設置
- 19. 以編程方式打開Mac App Store
- 20. 以編程方式打開TFS Workitem UI
- 21. 以編程方式打開SearchableSpinner
- 22. Android屏幕以編程方式打開
- 23. 以編程方式打開屏幕
- 24. Primefaces以編程方式打開p:fileUpload
- 25. 以編程方式打開Apple Health
- 26. 以編程方式打開網頁
- 27. 以編程方式打開kendoDetailTemplate
- 28. 以編程方式打開pdf文件
- 29. 如何以編程方式檢查Android中藍牙設備的連接狀態?
- 30. 以編程方式在一個頁面中打開PDF查看
中的OracleConnection實現你要知道,如果你的應用程序有一個連接打開或你想知道,如果DB已經打開的連接任何東西。 – sblundy 2008-11-08 15:38:35
我想實現連接池。 – 2008-11-10 15:11:23
檢查出來[爪哇JDBC連接狀態(http://stackoverflow.com/a/30888132/782535) – 2015-06-17 09:54:49