2012-07-06 125 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