如何在jdbc中为oracle数据库检查打开的连接?
注意:conn.isClosed()
不能用于此.
就像是:
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(); }
请注意,如果连接来自连接池(例如,在Application Server中),则池可能具有检查连接是否有效的机制.使用BEA,您可以在"test-on-reserve"属性中指定SELECT.
如果您正在开发自己的池,那么您可能想看看其他人是如何做到的(例如Proxool).