修正cache preparedStatement的问题

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@929 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-10-09 03:13:33 +00:00
parent 8bcee0aa85
commit 3d2f627b11
2 changed files with 9 additions and 1 deletions
@@ -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();
}
}
@@ -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<szujobs@hotmail.com>
@@ -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<PreparedStatementKey, PreparedStatementHolder> getMap() {