From 3a0012ef3fbce358898f44e01dcc8262a2a58f17 Mon Sep 17 00:00:00 2001 From: Trivernis Date: Wed, 2 Oct 2019 19:45:01 +0200 Subject: [PATCH] Added connection close safety - moved connection close outside of try catch to finally to ensure that the connection is closed even on error (SqliteManager) --- .../chunkmaster/lib/SqliteManager.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/net/trivernis/chunkmaster/lib/SqliteManager.kt b/src/main/kotlin/net/trivernis/chunkmaster/lib/SqliteManager.kt index a5fa28b..3475f9a 100644 --- a/src/main/kotlin/net/trivernis/chunkmaster/lib/SqliteManager.kt +++ b/src/main/kotlin/net/trivernis/chunkmaster/lib/SqliteManager.kt @@ -79,17 +79,23 @@ class SqliteManager(private val chunkmaster: Chunkmaster) { fun executeStatement(sql: String, values: HashMap, callback: ((ResultSet) -> Unit)?) { val connection = getConnection() if (connection != null) { - val statement = connection.prepareStatement(sql) - for (parameterValue in values) { - statement.setObject(parameterValue.key, parameterValue.value) - } - statement.execute() - val res = statement.resultSet - if (callback != null) { - callback(res) + try { + val statement = connection.prepareStatement(sql) + for (parameterValue in values) { + statement.setObject(parameterValue.key, parameterValue.value) + } + statement.execute() + val res = statement.resultSet + if (callback != null) { + callback(res) + } + statement.close() + } catch (e: Exception) { + chunkmaster.logger.severe("An error occured on sql $sql. ${e.message}") + chunkmaster.logger.info(ExceptionUtils.getStackTrace(e)) + } finally { + connection.close() } - statement.close() - connection.close() } else { chunkmaster.logger.severe("Could not execute sql $sql. No database connection established.") }