From b7d0dfa760471467ab112ea001c8b7b5bd56d166 Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 13 Jul 2017 01:31:24 +0800 Subject: [PATCH] improved proxy. --- .../druid/proxy/jdbc/JdbcParameterString.java | 2 + .../jdbc/PreparedStatementProxyImpl.java | 49 +++++++++++++------ .../util/jdbc/PreparedStatementBase.java | 3 ++ 3 files changed, 39 insertions(+), 15 deletions(-) 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); }