2011-08-27 119 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