|  | 
| 5 | 5 | import databaseconnector.interfaces.PreparedStatementCreator; | 
| 6 | 6 | 
 | 
| 7 | 7 | import java.math.BigDecimal; | 
| 8 |  | -import java.sql.Connection; | 
| 9 |  | -import java.sql.PreparedStatement; | 
| 10 |  | -import java.sql.SQLException; | 
| 11 |  | -import java.sql.Timestamp; | 
|  | 8 | +import java.sql.*; | 
| 12 | 9 | import java.util.ArrayList; | 
| 13 | 10 | import java.util.List; | 
| 14 | 11 | 
 | 
| @@ -37,26 +34,40 @@ public PreparedStatement create(IStringTemplate sql, Connection connection) thro | 
| 37 | 34 |     private void addPreparedStatementParameters(List<ITemplateParameter> queryParameters, PreparedStatement preparedStatement) throws SQLException, IllegalArgumentException { | 
| 38 | 35 |         for (int i = 0; i < queryParameters.size(); i++) { | 
| 39 | 36 |             ITemplateParameter parameter = queryParameters.get(i); | 
|  | 37 | +            Object parameterValue = parameter.getValue(); | 
| 40 | 38 | 
 | 
| 41 | 39 |             switch (parameter.getParameterType()) { | 
| 42 | 40 |                 case INTEGER: | 
| 43 |  | -                    preparedStatement.setLong(i + 1, (long) parameter.getValue()); | 
|  | 41 | +                    if (parameterValue == null) | 
|  | 42 | +                        preparedStatement.setNull(i + 1, Types.BIGINT); | 
|  | 43 | +                    else | 
|  | 44 | +                        preparedStatement.setLong(i + 1, (long) parameter.getValue()); | 
| 44 | 45 |                     break; | 
| 45 | 46 |                 case STRING: | 
| 46 |  | -                    preparedStatement.setString(i + 1, (String) parameter.getValue()); | 
|  | 47 | +                    if (parameterValue == null) | 
|  | 48 | +                        preparedStatement.setNull(i + 1, Types.VARCHAR); | 
|  | 49 | +                    else | 
|  | 50 | +                        preparedStatement.setString(i + 1, (String) parameter.getValue()); | 
| 47 | 51 |                     break; | 
| 48 | 52 |                 case BOOLEAN: | 
| 49 |  | -                    preparedStatement.setBoolean(i + 1, (Boolean) parameter.getValue()); | 
|  | 53 | +                    if (parameterValue == null) | 
|  | 54 | +                        preparedStatement.setNull(i + 1, Types.BOOLEAN); | 
|  | 55 | +                    else | 
|  | 56 | +                        preparedStatement.setBoolean(i + 1, (Boolean) parameter.getValue()); | 
| 50 | 57 |                     break; | 
| 51 | 58 |                 case DECIMAL: | 
| 52 |  | -                    preparedStatement.setBigDecimal(i + 1, (BigDecimal) parameter.getValue()); | 
|  | 59 | +                    if (parameterValue == null) | 
|  | 60 | +                        preparedStatement.setNull(i + 1, Types.DECIMAL); | 
|  | 61 | +                    else | 
|  | 62 | +                        preparedStatement.setBigDecimal(i + 1, (BigDecimal) parameter.getValue()); | 
| 53 | 63 |                     break; | 
| 54 | 64 |                 case DATETIME: | 
| 55 |  | -                    java.util.Date date = ((java.util.Date) parameter.getValue()); | 
| 56 |  | -                    if (date == null) | 
| 57 |  | -                        preparedStatement.setTimestamp(i + 1, null); | 
| 58 |  | -                    else | 
|  | 65 | +                    if (parameterValue == null) | 
|  | 66 | +                        preparedStatement.setNull(i + 1, Types.TIMESTAMP); | 
|  | 67 | +                    else { | 
|  | 68 | +                        java.util.Date date = ((java.util.Date) parameter.getValue()); | 
| 59 | 69 |                         preparedStatement.setTimestamp(i + 1, new Timestamp(date.getTime())); | 
|  | 70 | +                    } | 
| 60 | 71 |                     break; | 
| 61 | 72 |                 default: | 
| 62 | 73 |                     throw new IllegalArgumentException("Invalid parameter type: " + parameter.getParameterType()); | 
|  | 
0 commit comments