What is JDBC's Connection.isClosed() good for, and why is Snaq DBPool misbehaving on close?

Posted by Uri on Stack Overflow See other posts from Stack Overflow or by Uri
Published on 2010-04-29T20:18:03Z Indexed on 2010/05/03 0:38 UTC
Read the original article Hit count: 580

Filed under:
|

I have the following code in Java:

if(!conn.isClosed())
{
    conn.close();
}

Instead of working, I am awarded with:

java.sql.SQLException: Connection already closed

My connection object is a Snaq.db.CacheConnection

I checked the JavaDocs for isClosed, and they state that:

This method generally cannot be called to determine whether a connection to a database is valid or invalid. A typical client can determine that a connection is invalid by catching any exceptions that might be thrown when an operation is attempted.

So my questions are:

1) What good is JDBC's isClosed() anyway? Since when do we use Exceptions in Java to check for validity?

2) What is the correct pattern to close a database? Should I just close and swallow exceptions?

3) Any idea why would SnaqDB be closing the connection? (My backend is a Postgres 8.3)

© Stack Overflow or respective owner

Related posts about jdbc

Related posts about snaqdb