programmatically checking for open connection in JDBC

前端 未结 4 995
无人共我
无人共我 2020-12-18 05:26

How do I check for an open connection in jdbc for oracle database?

Note: conn.isClosed() cannot be used for this.

4条回答
  •  -上瘾入骨i
    2020-12-18 05:54

    Something like:

    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();
    } 
    

    Note that if the connection is coming from a Connection Pool (in a Application Server for example) then the Pool may have a mechanism to check if a connection is valid or not. With BEA, you specify the SELECT in the "test-on-reserve" property.

    If you are developing your own pool then you may want to take a look at how others are doing it (ex. Proxool).

提交回复
热议问题