diff --git a/core/src/main/java/org/sql2o/Connection.java b/core/src/main/java/org/sql2o/Connection.java index 12caa6c1..1d79b55b 100644 --- a/core/src/main/java/org/sql2o/Connection.java +++ b/core/src/main/java/org/sql2o/Connection.java @@ -135,7 +135,10 @@ public Connection rollback(boolean closeConnection){ logger.warn("Could not roll back transaction. message: {}", e); } finally { - if(closeConnection) this.closeJdbcConnection(); + if(closeConnection) { + this.closeAndClearStatements(); + this.closeJdbcConnection(); + } } return this; } @@ -152,8 +155,10 @@ public Connection commit(boolean closeConnection){ throw new Sql2oException(e); } finally { - if(closeConnection) + if(closeConnection) { + this.closeAndClearStatements(); this.closeJdbcConnection(); + } } return this; } @@ -263,6 +268,17 @@ void removeStatement(Statement statement){ statements.remove(statement); } + private void closeAndClearStatements() { + for (Statement statement : statements) { + try { + getSql2o().getQuirks().closeStatement(statement); + } catch (Throwable e) { + logger.warn("Could not close statement.", e); + } + } + statements.clear(); + } + public void close() { boolean connectionIsClosed; try { @@ -273,14 +289,7 @@ public void close() { if (!connectionIsClosed) { - for (Statement statement : statements) { - try { - getSql2o().getQuirks().closeStatement(statement); - } catch (Throwable e) { - logger.warn("Could not close statement.", e); - } - } - statements.clear(); + closeAndClearStatements(); boolean rollback = rollbackOnClose; if (rollback) {