mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for duplicate getUpdateCount
This commit is contained in:
@@ -35,18 +35,20 @@ import com.alibaba.druid.stat.JdbcSqlStat;
|
||||
*/
|
||||
public class StatementProxyImpl extends WrapperProxyImpl implements StatementProxy {
|
||||
|
||||
private final ConnectionProxy connection;
|
||||
private final Statement statement;
|
||||
private final ConnectionProxy connection;
|
||||
private final Statement statement;
|
||||
|
||||
protected String lastExecuteSql;
|
||||
private long lastExecuteTimeNano;
|
||||
protected JdbcSqlStat sqlStat;
|
||||
protected boolean firstResultSet;
|
||||
protected String lastExecuteSql;
|
||||
private long lastExecuteTimeNano;
|
||||
protected JdbcSqlStat sqlStat;
|
||||
protected boolean firstResultSet;
|
||||
|
||||
protected ArrayList<String> batchSqlList;
|
||||
|
||||
protected ArrayList<String> batchSqlList;
|
||||
|
||||
protected StatementExecuteType lastExecuteType;
|
||||
|
||||
protected Integer updateCount = null;
|
||||
|
||||
public StatementProxyImpl(ConnectionProxy connection, Statement statement, long id){
|
||||
super(statement, id);
|
||||
this.connection = connection;
|
||||
@@ -102,15 +104,17 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql) throws SQLException {
|
||||
updateCount = null;
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.Execute;
|
||||
|
||||
|
||||
firstResultSet = createChain().statement_execute(this, sql);
|
||||
return firstResultSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
updateCount = null;
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.Execute;
|
||||
firstResultSet = createChain().statement_execute(this, sql, autoGeneratedKeys);
|
||||
@@ -119,6 +123,7 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, int[] columnIndexes) throws SQLException {
|
||||
updateCount = null;
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.Execute;
|
||||
firstResultSet = createChain().statement_execute(this, sql, columnIndexes);
|
||||
@@ -127,6 +132,7 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
|
||||
@Override
|
||||
public boolean execute(String sql, String[] columnNames) throws SQLException {
|
||||
updateCount = null;
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.Execute;
|
||||
firstResultSet = createChain().statement_execute(this, sql, columnNames);
|
||||
@@ -135,12 +141,19 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
|
||||
@Override
|
||||
public int[] executeBatch() throws SQLException {
|
||||
lastExecuteType = StatementExecuteType.ExecuteBatch;
|
||||
return createChain().statement_executeBatch(this);
|
||||
lastExecuteType = StatementExecuteType.ExecuteBatch;
|
||||
int[] updateCounts = createChain().statement_executeBatch(this);
|
||||
|
||||
if (updateCounts != null && updateCounts.length == 1) {
|
||||
updateCount = updateCounts[0];
|
||||
}
|
||||
|
||||
return updateCounts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultSet executeQuery(String sql) throws SQLException {
|
||||
updateCount = null;
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.ExecuteQuery;
|
||||
return createChain().statement_executeQuery(this, sql);
|
||||
@@ -150,28 +163,32 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
public int executeUpdate(String sql) throws SQLException {
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.ExecuteUpdate;
|
||||
return createChain().statement_executeUpdate(this, sql);
|
||||
updateCount = createChain().statement_executeUpdate(this, sql);
|
||||
return updateCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException {
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.ExecuteUpdate;
|
||||
return createChain().statement_executeUpdate(this, sql, autoGeneratedKeys);
|
||||
updateCount = createChain().statement_executeUpdate(this, sql, autoGeneratedKeys);
|
||||
return updateCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException {
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.ExecuteUpdate;
|
||||
return createChain().statement_executeUpdate(this, sql, columnIndexes);
|
||||
updateCount = createChain().statement_executeUpdate(this, sql, columnIndexes);
|
||||
return updateCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int executeUpdate(String sql, String[] columnNames) throws SQLException {
|
||||
lastExecuteSql = sql;
|
||||
lastExecuteType = StatementExecuteType.ExecuteUpdate;
|
||||
return createChain().statement_executeUpdate(this, sql, columnNames);
|
||||
updateCount = createChain().statement_executeUpdate(this, sql, columnNames);
|
||||
return updateCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -206,11 +223,13 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults() throws SQLException {
|
||||
updateCount = null;
|
||||
return createChain().statement_getMoreResults(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getMoreResults(int current) throws SQLException {
|
||||
updateCount = null;
|
||||
return createChain().statement_getMoreResults(this, current);
|
||||
}
|
||||
|
||||
@@ -239,9 +258,13 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
return createChain().statement_getResultSetType(this);
|
||||
}
|
||||
|
||||
//bug fixed for oracle
|
||||
@Override
|
||||
public int getUpdateCount() throws SQLException {
|
||||
return createChain().statement_getUpdateCount(this);
|
||||
if (updateCount == null) {
|
||||
updateCount = createChain().statement_getUpdateCount(this);
|
||||
}
|
||||
return updateCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -356,18 +379,18 @@ public class StatementProxyImpl extends WrapperProxyImpl implements StatementPro
|
||||
}
|
||||
|
||||
public long getLastExecuteTimeNano() {
|
||||
return lastExecuteTimeNano;
|
||||
}
|
||||
return lastExecuteTimeNano;
|
||||
}
|
||||
|
||||
public void setLastExecuteTimeNano(long lastExecuteTimeNano) {
|
||||
this.lastExecuteTimeNano = lastExecuteTimeNano;
|
||||
}
|
||||
public void setLastExecuteTimeNano(long lastExecuteTimeNano) {
|
||||
this.lastExecuteTimeNano = lastExecuteTimeNano;
|
||||
}
|
||||
|
||||
public StatementExecuteType getLastExecuteType() {
|
||||
return lastExecuteType;
|
||||
}
|
||||
public StatementExecuteType getLastExecuteType() {
|
||||
return lastExecuteType;
|
||||
}
|
||||
|
||||
public boolean isFirstResultSet() {
|
||||
return firstResultSet;
|
||||
}
|
||||
public boolean isFirstResultSet() {
|
||||
return firstResultSet;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user