Skip to content

Commit

Permalink
Fixes JdbcExecutor's uses of RawParameterizedSqlStatement
Browse files Browse the repository at this point in the history
Adds a private method, setParameters, to set parameters from RawParameterizedSqlStatement to PreparedStatement.
Replaces parameters loop in execute with setParameters.
Replaces parameters loop in query with setParameters.
  • Loading branch information
Andrew Simmons authored and andrew-simmons committed Aug 18, 2023
1 parent 0101b8c commit 32a0e09
Showing 1 changed file with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,7 @@ public void execute(final SqlStatement sql, final List<SqlVisitor> sqlVisitors)
String finalSql = applyVisitors((RawParameterizedSqlStatement) sql, sqlVisitors);

try (PreparedStatement pstmt = factory.create(finalSql)) {
final List<?> parameters = ((RawParameterizedSqlStatement) sql).getParameters();
for (int i = 0; i < parameters.size(); i++) {
pstmt.setObject(i, parameters.get(i));
}
setParameters(pstmt, (RawParameterizedSqlStatement) sql);
pstmt.execute();

return;
Expand All @@ -180,6 +177,13 @@ public void execute(final SqlStatement sql, final List<SqlVisitor> sqlVisitors)
execute(new ExecuteStatementCallback(sql, sqlVisitors), sqlVisitors);
}

private void setParameters(final PreparedStatement pstmt, final RawParameterizedSqlStatement sql) throws SQLException {
final List<?> parameters = sql.getParameters();
for (int i = 0; i < parameters.size(); i++) {
pstmt.setObject(i + 1, parameters.get(i));
}
}

private String applyVisitors(RawParameterizedSqlStatement sql, List<SqlVisitor> sqlVisitors) {
String finalSql = sql.getSql();
if (sqlVisitors != null) {
Expand All @@ -204,10 +208,7 @@ public Object query(final SqlStatement sql, final ResultSetExtractor rse, final
String finalSql = applyVisitors((RawParameterizedSqlStatement) sql, sqlVisitors);

try (PreparedStatement pstmt = factory.create(finalSql)) {
final List<?> parameters = ((RawParameterizedSqlStatement) sql).getParameters();
for (int i = 0; i < parameters.size(); i++) {
pstmt.setObject(i, parameters.get(0));
}
setParameters(pstmt, (RawParameterizedSqlStatement) sql);
return rse.extractData(pstmt.executeQuery());
} catch (SQLException e) {
throw new DatabaseException(e);
Expand Down

0 comments on commit 32a0e09

Please sign in to comment.