[
https://issues.apache.org/jira/browse/DBCP-413?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13965534#comment-13965534
]
Phil Steitz commented on DBCP-413:
----------------------------------
DBCP should both set the isClosed property on its wrapper for the
PreparedStatement and close the actual JDBC statement when a connection
borrowed from the pool is closed. The driver should treat repeated close on a
statement as no-op. What does not make sense in this case is isClosed
returning false. That could point to a DBCP bug (though not what the title for
this issue suggests). If statement pooling is enabled and there are concurrent
clients involved, this scenario is possible with the right timing and does not
indicate a bug in DBCP - just reconfirms that clients should *not* use anything
associated with a connection once it has been returned to the pool.
> Closing a Connection does not close Statement objects created on that
> connection, by way of the close() method.
> ---------------------------------------------------------------------------------------------------------------
>
> Key: DBCP-413
> URL: https://issues.apache.org/jira/browse/DBCP-413
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.4
> Reporter: Mark W
> Priority: Minor
>
> While using the MS SQL 2012 jdbc drivers with dbcp, I noticed that if you
> create a connection, then create a preparedStatement from that connection,
> and close the connection object, PreparedStatement.isClosed() will return
> false, but you will get a SQLException stating the statement has been closed
> if you attempt to call any of the set or execute methods.
> From the JDBC spec:
> Connection.close
> An application calls the method Connection.close() to indicate that it has
> finished using a connection. All Statement objects created from a given
> Connection object will be closed when the close method for the Connection
> object is called.
--
This message was sent by Atlassian JIRA
(v6.2#6252)