diff --git a/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatement.java b/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatement.java index f3b7e74..b74a65e 100644 --- a/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatement.java +++ b/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatement.java @@ -85,7 +85,30 @@ public void prepare( this.elements.forEach((position, object) -> { try { - preparedStatement.setObject(position, object.object(), object.type()); + switch (object.type()) { + + case VARCHAR, LONGVARCHAR, NVARCHAR, LONGNVARCHAR -> + preparedStatement.setString(position, (String) object.object()); + + case DOUBLE -> + preparedStatement.setDouble(position, (Double) object.object()); + + case TINYINT, SMALLINT, INTEGER -> + preparedStatement.setInt(position, (Integer) object.object()); + + case BIGINT -> + preparedStatement.setLong(position, (Long) object.object()); + + case FLOAT -> + preparedStatement.setFloat(position, (Float) object.object()); + + case BOOLEAN -> + preparedStatement.setBoolean(position, (Boolean) object.object()); + + default -> /* Added due to compatibility with some drivers. */ + preparedStatement.setObject(position, object.object(), object.type()); + + } } catch (@NotNull Exception exception) { throw new RuntimeException("Unable to prepare statement due to exception.", exception); } diff --git a/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatementObject.java b/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatementObject.java index b6333c1..59d9657 100644 --- a/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatementObject.java +++ b/sql/src/main/java/pl/mrstudios/commons/sql/statement/SqlStatementObject.java @@ -2,10 +2,10 @@ import org.jetbrains.annotations.NotNull; -import java.sql.SQLType; +import java.sql.JDBCType; record SqlStatementObject( @NotNull Integer position, - @NotNull SQLType type, + @NotNull JDBCType type, @NotNull Object object ) {}