You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/08/04 09:26:40 UTC
[3/3] git commit: CAMEL-7653: camel-sql,
set prepared statement arguments using a setter that deals with
various JDBC driver differences with setObject vs setInteger/setString etc.
Thanks to Jo Geraerts for the patch.
CAMEL-7653: camel-sql, set prepared statement arguments using a setter that deals with various JDBC driver differences with setObject vs setInteger/setString etc. Thanks to Jo Geraerts for the patch.
Conflicts:
components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4c62b2e4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4c62b2e4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4c62b2e4
Branch: refs/heads/camel-2.12.x
Commit: 4c62b2e4a1ee7b740be0e0e67e4340dccea3c1d7
Parents: 563d143
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Aug 4 09:24:09 2014 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Aug 4 09:26:25 2014 +0200
----------------------------------------------------------------------
.../sql/DefaultSqlPrepareStatementStrategy.java | 28 ++++++++++++++------
1 file changed, 20 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/4c62b2e4/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java
----------------------------------------------------------------------
diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java
index 0ffac39..87221c5 100644
--- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java
+++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlPrepareStatementStrategy.java
@@ -32,6 +32,7 @@ import org.apache.camel.RuntimeExchangeException;
import org.apache.camel.util.StringQuoteHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.ArgumentPreparedStatementSetter;
/**
* Default {@link SqlPrepareStatementStrategy} that supports named query parameters as well index based.
@@ -146,19 +147,30 @@ public class DefaultSqlPrepareStatementStrategy implements SqlPrepareStatementSt
@Override
public void populateStatement(PreparedStatement ps, Iterator<?> iterator, int expectedParams) throws SQLException {
+ if (expectedParams <= 0) {
+ return;
+ }
+
+ final Object[] args = new Object[expectedParams];
+ int i = 0;
int argNumber = 1;
- if (expectedParams > 0) {
- while (iterator != null && iterator.hasNext()) {
- Object value = iterator.next();
- LOG.trace("Setting parameter #{} with value: {}", argNumber, value);
- ps.setObject(argNumber, value);
- argNumber++;
+
+ while (iterator != null && iterator.hasNext()) {
+ Object value = iterator.next();
+ LOG.trace("Setting parameter #{} with value: {}", argNumber, value);
+ if (argNumber <= expectedParams) {
+ args[i] = value;
}
+ argNumber++;
+ i++;
}
-
if (argNumber - 1 != expectedParams) {
- throw new SQLException("Number of parameters mismatch. Expected: " + expectedParams + ", was:" + (argNumber - 1));
+ throw new SQLException("Number of parameters mismatch. Expected: " + expectedParams + ", was: " + (argNumber - 1));
}
+
+ // use argument setter as it deals with various JDBC drivers setObject vs setLong/setInteger/setString etc.
+ ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args);
+ setter.setValues(ps);
}
protected boolean hasNamedParameters(String query) {