commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DBCP-413) Closing a Connection does not close Statement objects created on that connection, by way of the close() method.
Date Thu, 10 Apr 2014 16:52:33 GMT

    [ 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)

Mime
View raw message