通常我们的框架类hibernate将处理数据库连接的打开和关闭。如何测试数据库连接是否成功关闭?
但是由于一些技术要求,我们需要通过jndi直接调用数据库来打开另一个数据库连接。
对于这种情况,我们如何彻底的测试,我们打开连接和密切的联系预期将正常工作?
旁边放conn.close
在一个异常终于阻止?
通常我们的框架类hibernate将处理数据库连接的打开和关闭。如何测试数据库连接是否成功关闭?
但是由于一些技术要求,我们需要通过jndi直接调用数据库来打开另一个数据库连接。
对于这种情况,我们如何彻底的测试,我们打开连接和密切的联系预期将正常工作?
旁边放conn.close
在一个异常终于阻止?
把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
}
它实际上取决于数据库。大多数数据库显示连接到它们的数量,也可以显示连接到它的IP地址。所以,检入数据库。
否则,请在关闭后尝试运行模拟查询,它应该失败,捕获异常,以便它不关闭连接。
+1,关于检查数据库连接的好主意(尽管我不知道如何以编程的方式执行该操作 - 查找出来会很有趣!)。 – jadarnel27
嘿,刚刚发现[SQL Server](http://stackoverflow.com/questions/1248423/how-to-see-active-sql-server-connections) – jadarnel27
相关问题 - 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