diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java index 031283f680..12ff07590e 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java @@ -22,6 +22,8 @@ public final class JdbcParameterString implements JdbcParameter { private final String value; + public final static JdbcParameterString empty = new JdbcParameterString(""); + public JdbcParameterString(String value){ this.value = value; } diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java b/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java index 6d4262b7ca..419b7dfd89 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java @@ -339,51 +339,64 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr @Override public void setDate(int parameterIndex, Date x) throws SQLException { - setParameter(parameterIndex, createParameter(x)); + setParameter(parameterIndex + , createParameter(x)); - createChain().preparedStatement_setDate(this, parameterIndex, x); + createChain() + .preparedStatement_setDate(this, parameterIndex, x); } @Override public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException { - setParameter(parameterIndex, createParameter(Types.DATE, x, cal)); + setParameter(parameterIndex + , createParameter(Types.DATE, x, cal)); - createChain().preparedStatement_setDate(this, parameterIndex, x, cal); + createChain() + .preparedStatement_setDate(this, parameterIndex, x, cal); } @Override public void setDouble(int parameterIndex, double x) throws SQLException { - setParameter(parameterIndex, createParameter(Types.DOUBLE, x)); + setParameter(parameterIndex + , createParameter(Types.DOUBLE, x)); - createChain().preparedStatement_setDouble(this, parameterIndex, x); + createChain() + .preparedStatement_setDouble(this, parameterIndex, x); } @Override public void setFloat(int parameterIndex, float x) throws SQLException { - setParameter(parameterIndex, createParameter(Types.FLOAT, x)); + setParameter(parameterIndex + , createParameter(Types.FLOAT, x)); createChain().preparedStatement_setFloat(this, parameterIndex, x); } @Override public void setInt(int parameterIndex, int x) throws SQLException { - setParameter(parameterIndex, createParemeter(x)); + setParameter(parameterIndex + , createParemeter(x)); - createChain().preparedStatement_setInt(this, parameterIndex, x); + createChain() + .preparedStatement_setInt(this, parameterIndex, x); } @Override public void setLong(int parameterIndex, long x) throws SQLException { - setParameter(parameterIndex, createParameter(x)); + setParameter(parameterIndex + , createParameter(x)); - createChain().preparedStatement_setLong(this, parameterIndex, x); + createChain() + .preparedStatement_setLong(this, parameterIndex, x); } @Override public void setNCharacterStream(int parameterIndex, Reader x) throws SQLException { - setParameter(parameterIndex, createParameter(TYPE.NCharacterInputStream, x)); + setParameter(parameterIndex + , createParameter(TYPE.NCharacterInputStream, x)); - createChain().preparedStatement_setNCharacterStream(this, parameterIndex, x); + createChain() + .preparedStatement_setNCharacterStream(this, parameterIndex, x); } @Override @@ -586,9 +599,11 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr @Override public void setString(int parameterIndex, String x) throws SQLException { - setParameter(parameterIndex, createParameter(x)); + setParameter(parameterIndex + , createParameter(x)); - createChain().preparedStatement_setString(this, parameterIndex, x); + createChain() + .preparedStatement_setString(this, parameterIndex, x); } @Override @@ -688,6 +703,10 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr if (x == null) { return JdbcParameterNull.VARCHAR; } + + if (x.length() == 0) { + return JdbcParameterString.empty; + } return new JdbcParameterString(x); } diff --git a/src/main/java/com/alibaba/druid/util/jdbc/PreparedStatementBase.java b/src/main/java/com/alibaba/druid/util/jdbc/PreparedStatementBase.java index 5a1c135c93..52ce46463a 100644 --- a/src/main/java/com/alibaba/druid/util/jdbc/PreparedStatementBase.java +++ b/src/main/java/com/alibaba/druid/util/jdbc/PreparedStatementBase.java @@ -79,6 +79,9 @@ public abstract class PreparedStatementBase extends StatementBase implements Pre @Override public void setInt(int parameterIndex, int x) throws SQLException { + for (int i = parameters.size(); i < parameterIndex; ++i) { + parameters.add(null); + } parameters.add(parameterIndex - 1, x); }