2011-08-27 121 views
2

通常我們的框架類hibernate將處理數據庫連接的打開和關閉。如何測試數據庫連接是否成功關閉?

但是由於一些技術要求,我們需要通過jndi直接調用數據庫來打開另一個數據庫連接。

對於這種情況,我們如何徹底的測試,我們打開連接密切的聯繫預期將正常工作?

旁邊放conn.close在一個異常終於阻止?

+0

相關問題 - http://stackoverflow.com/questions/274822/programmatically-checking-for-open-connection-in-jdbc和http://stackoverflow.com/questions/5075824/close-connection-to- db-does-not-close-all-connections – adatapost

回答

2

conn.close()放在finally看起來不錯。我想在那之後,你可能會有另一個try-catch塊,你試圖對數據庫執行查詢。如果您遇到異常情況,則表示(很有可能)您的連接已完全關閉。

只是一個想法,希望有所幫助!

編輯:只要是明確的,以後你我的意思是做這樣的事情finally塊(注意到,我的Java語法是有點生疏了,所以這可能不會是完全正確的,但你的想法哈哈

try 
{ 
    s.executeQuery(sqlString); 
} 
catch(SQLException e) 
{ 
    //examine error here to make sure it's because the connection is already closed 
} 
3

它實際上取決於數據庫。大多數數據庫顯示連接到它們的數量,也可以顯示連接到它的IP地址。所以,檢入數據庫。

否則,請在關閉後嘗試運行模擬查詢,它應該失敗,捕獲異常,以便它不關閉連接。

+0

+1,關於檢查數據庫連接的好主意(儘管我不知道如何以編程的方式執行該操作 - 查找出來會很有趣!)。 – jadarnel27

+0

嘿,剛剛發現[SQL Server](http://stackoverflow.com/questions/1248423/how-to-see-active-sql-server-connections) – jadarnel27