From 56dc2738719026139db1e04ff1a00a202dc8c2b6 Mon Sep 17 00:00:00 2001 From: Hubert Kuliniak Date: Thu, 15 Aug 2024 17:59:34 +0200 Subject: [PATCH] `commons-sql`: fix compatibility with `'xerial sqlite driver'` --- .../commons/sql/statement/SqlStatement.java | 25 ++++++++++++++++++- .../sql/statement/SqlStatementObject.java | 4 +-- 2 files changed, 26 insertions(+), 3 deletions(-) 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 ) {}