From 89ccfd496737e8030d533a6970f0e6872b223717 Mon Sep 17 00:00:00 2001 From: Tristan Landry Date: Fri, 12 Jan 2024 03:50:15 -0500 Subject: [PATCH] EasyCommands v0.8.12 Updated MySQL driver version. Implemented new method to verify table validity since old one wasn't working as expected. MySQL implementation should now stable. --- pom.xml | 2 +- .../ca/tristan/easycommands/EasyCommands.java | 11 +---------- .../ca/tristan/easycommands/database/MySQL.java | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 53d6ac4..acf9840 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ mysql mysql-connector-java - 8.0.32 + 8.0.33 com.sedmelluq diff --git a/src/main/java/ca/tristan/easycommands/EasyCommands.java b/src/main/java/ca/tristan/easycommands/EasyCommands.java index c3449bc..db8e6b6 100644 --- a/src/main/java/ca/tristan/easycommands/EasyCommands.java +++ b/src/main/java/ca/tristan/easycommands/EasyCommands.java @@ -225,16 +225,7 @@ private void mysqlInit() { } try { - if(mysql.checkConnection(0)) { - DatabaseMetaData dbm = mysql.getConnection().getMetaData(); - ResultSet tables = dbm.getTables(null, null, "guildproperties", null); - if(tables.next()) { - // Means that the table is valid - // Return the code here to let the bot start and register the guilds using mysql; See more inside: ECGuild.java - Logger.log(LogType.OK, "Database GuildProperties table is valid."); - return; - } - + if (!mysql.tableExists("guildproperties")) { // Create table when missing String table = "CREATE TABLE guildproperties ( guildId varchar(255) primary key, member_role varchar(255), bot_role varchar(255), music_channel varchar(255), log_channel varchar(255) )"; PreparedStatement preparedStatement = mysql.getConnection().prepareStatement(table); diff --git a/src/main/java/ca/tristan/easycommands/database/MySQL.java b/src/main/java/ca/tristan/easycommands/database/MySQL.java index 759ed7e..97b6899 100644 --- a/src/main/java/ca/tristan/easycommands/database/MySQL.java +++ b/src/main/java/ca/tristan/easycommands/database/MySQL.java @@ -2,6 +2,7 @@ import java.sql.Connection; import java.sql.DriverManager; +import java.sql.ResultSet; import java.sql.SQLException; public class MySQL { @@ -52,4 +53,18 @@ public synchronized boolean checkConnection(int timeout) throws SQLException { } } + public boolean tableExists(String tableName) throws SQLException { + boolean tExists = false; + try (ResultSet rs = connection.getMetaData().getTables(getDatabase(), null, tableName, null)) { + while (rs.next()) { + String tName = rs.getString("TABLE_NAME"); + if (tName != null && tName.equals(tableName)) { + tExists = true; + break; + } + } + } + return tExists; + } + }