On Tue, 27 Aug 2002, Short, Dave wrote:

> Date: Tue, 27 Aug 2002 09:08:58 -0700
> From: "Short, Dave" <[EMAIL PROTECTED]>
> Reply-To: Tomcat Users List <[EMAIL PROTECTED]>
> To: 'Tomcat Users List' <[EMAIL PROTECTED]>
> Subject: RE: Does closing a Connection variable and setting it to null
>     clo se all of the ResultSet and Statements?
>
> By closing you mean set the ResultSet and Statement objects to null -
> correct?
>

No ... explicitly call close() on them first.  My most common pattern for
JDBC calls goes like this:

  Connection conn = null;
  Statement stmt = null;  // Or PreparedStatement if needed
  ResultSet rs = null;
  try {
    conn = ... get connection from connection pool ...
    stmt = conn.createStatement("select ...");
    rs = stmt.executeQuery();
    ... iterate through the result set ...
    rs.close();
    rs = null;
    stmt.close();
    stmt = null;
    conn.close(); // Return to connection pool
    conn = null;
  } catch (SQLException e) {
    ... deal with errors ...
  } finally {
    if (rs != null) {
      try { rs.close(); } catch (SQLException e) { ; }
      rs = null;
    }
    if (stmt != null) {
      try { stmt.close(); } catch (SQLException e) { ; }
      stmt = null;
    }
    if (conn != null) {
      try { conn.close(); } catch (SQLException e) { ; }
      conn = null;
    }
  }

This way, you always clean up after yourself as quickly as possible, and
never forget to return the connection to the connection pool -- even if
exceptions occur.

Craig


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to