修正close的bug

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@476 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-07-19 08:03:02 +00:00
parent 9063330c6a
commit 3e0482da51
@@ -303,7 +303,7 @@ public class PoolableConnection implements PooledConnection, Connection {
return poolableStatement;
}
}
PreparedStatement stmt = conn.prepareStatement(sql, autoGeneratedKeys);
holder.getDataSource().initStatement(stmt);
@@ -321,72 +321,82 @@ public class PoolableConnection implements PooledConnection, Connection {
public CallableStatement prepareCall(String sql) throws SQLException {
checkOpen();
if (holder.isPoolPreparedStatements()) {
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_1);
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_1);
if (holder.isPoolPreparedStatements()) {
PoolableCallableStatement poolableStatement = (PoolableCallableStatement) holder.getStatementPool().get(key);
if (poolableStatement != null) {
poolableStatement.setPoolableConnection(this);
poolableStatement.setClosed(false);
holder.addTrace(poolableStatement);
return poolableStatement;
}
CallableStatement stmt = conn.prepareCall(sql);
holder.getDataSource().initStatement(stmt);
return new PoolableCallableStatement(this, stmt, key);
}
return conn.prepareCall(sql);
CallableStatement stmt = conn.prepareCall(sql);
holder.getDataSource().initStatement(stmt);
CallableStatement rtnVal = new PoolableCallableStatement(this, stmt, key);
holder.addTrace(rtnVal);
return rtnVal;
}
@Override
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException {
checkOpen();
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_2);
if (holder.isPoolPreparedStatements()) {
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_2);
PoolableCallableStatement poolableStatement = (PoolableCallableStatement) holder.getStatementPool().get(key);
if (poolableStatement != null) {
poolableStatement.setPoolableConnection(this);
poolableStatement.setClosed(false);
holder.addTrace(poolableStatement);
return poolableStatement;
}
CallableStatement stmt = conn.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
holder.getDataSource().initStatement(stmt);
return new PoolableCallableStatement(this, stmt, key);
}
return conn.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
CallableStatement stmt = conn.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
holder.getDataSource().initStatement(stmt);
CallableStatement rtnVal = new PoolableCallableStatement(this, stmt, key);
holder.addTrace(rtnVal);
return rtnVal;
}
@Override
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException {
checkOpen();
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_3);
if (holder.isPoolPreparedStatements()) {
PreparedStatementKey key = new PreparedStatementKey(sql, getCatalog(), MethodType.Precall_3);
PoolableCallableStatement poolableStatement = (PoolableCallableStatement) holder.getStatementPool().get(key);
if (poolableStatement != null) {
poolableStatement.setPoolableConnection(this);
poolableStatement.setClosed(false);
holder.addTrace(poolableStatement);
return poolableStatement;
}
CallableStatement stmt = conn.prepareCall(sql, resultSetType, resultSetConcurrency);
holder.getDataSource().initStatement(stmt);
return new PoolableCallableStatement(this, stmt, key);
}
return conn.prepareCall(sql, resultSetType, resultSetConcurrency);
CallableStatement stmt = conn.prepareCall(sql, resultSetType, resultSetConcurrency);
holder.getDataSource().initStatement(stmt);
CallableStatement rtnVal = new PoolableCallableStatement(this, stmt, key);
holder.addTrace(rtnVal);
return rtnVal;
}
// ////////////////////