From 3d2f627b1161e4fb22ae63ab376eaeccb32095f3 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 9 Oct 2011 03:13:33 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3cache=20preparedStatement?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@929 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- src/main/java/com/alibaba/druid/pool/DruidDataSource.java | 4 ++++ .../java/com/alibaba/druid/pool/PreparedStatementPool.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java index dc03bcf67e..6700927cb9 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataSource.java @@ -172,6 +172,10 @@ public class DruidDataSource extends DruidAbstractDataSource implements DruidDat for (int i = 0; i < poolingCount; ++i) { ConnectionHolder connection = connections[i]; + for (PreparedStatementHolder holder : connection.getStatementPool().getMap().values()) { + JdbcUtils.close(holder.getStatement()); + } + connection.getStatementPool().getMap().clear(); } } diff --git a/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java b/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java index 57680d4710..5694416685 100644 --- a/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java +++ b/src/main/java/com/alibaba/druid/pool/PreparedStatementPool.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.Map.Entry; import com.alibaba.druid.pool.PoolablePreparedStatement.PreparedStatementKey; +import com.alibaba.druid.util.JdbcUtils; /** * @author wenshao @@ -54,7 +55,10 @@ public class PreparedStatementPool { public void put(PreparedStatementHolder holder) { PreparedStatementKey key = holder.getKey(); - map.put(key, holder); + PreparedStatementHolder oldHolder = map.put(key, holder); + if (oldHolder != null) { + JdbcUtils.close(oldHolder.getStatement()); + } } public Map getMap() {