For a connection pool, con.close() puts the connection back into the pool
instead of really closing the connection. Thus, you must explicitly close
the statements.
----- Original Message -----
From: "Gregor Rayman" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, May 19, 2001 2:10 AM
Subject: JDBC Connection Pooling
> Hi, I've just found one subtle problem the Struts implementation
> of DataSource.
>
> My code looks something like this:
>
> ...
> Connection con = this.dataSource.getConnection();
> try {
> PreparedStatement stmt = con.prepareStatement(sql);
> stmt.setString(1, id);
> ResultSet rs = stmt.executeQuery();
> String result = null;
> if (rs.next()) {
> result = rs.getString(1);
> }
> return result;
> } finally {
> con.close();
> }
> ...
>
> Obviously, there is an error. I do not close either the ResultSet
> nor the Statement. But I do close the Connection, so that the
> connection is returned to the DataSource's pool.
>
> I realized my error, because Oracle complained about too many
> open cursors after a while.
>
> Shouldn't the call to con.close() close all open statements or at
> least warn about open ones?
>
> --
> gR
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com