package de.jatitv.commandguiv2.Spigot.system.database; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import de.jatitv.commandguiv2.Spigot.Main; import net.t2code.lib.Spigot.Lib.messages.send; import java.sql.*; import java.time.ZoneId; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; public class MySQL { public static String ip = "localhost"; public static Integer port = 3306; public static String database; public static String user = "root"; public static String password = ""; protected static String url; public static Boolean SSL; private static final HikariConfig config = new HikariConfig(); private static HikariDataSource ds; public static void main() { long long_ = System.currentTimeMillis(); Calendar now = Calendar.getInstance(); ZoneId timeZone = now.getTimeZone().toZoneId(); send.debug(Main.plugin, "Server TimeZone is : " + timeZone); try { config.setJdbcUrl("jdbc:mysql://" + ip + ":" + port + "/" + database + "?useJDBCCompliantTimezoneShift=true&allowMultiQueries=true&useLegacyDatetimeCode=false&autoReconnect=true&serverTimezone=" + timeZone + "&useSSL=" + SSL); config.setUsername(user); config.setPassword(password); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); ds = new HikariDataSource(config); send.console(Main.prefix + " §2MYSQL successfully connected." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); } catch (Exception ex) { send.console(Main.prefix + " §4MYSQL not connected." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); send.error(Main.plugin, ex.getMessage() + " --- " + (System.currentTimeMillis() - long_) + "ms"); } //Bukkit.getConsoleSender().sendMessage((System.currentTimeMillis() - long_) + "ms"); } public static void query(String query) { if (ds == null){ return; } send.debug(Main.plugin, query); try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); stmt.execute(query); stmt.close(); } catch (SQLException e) { System.err.println(e.getMessage()); } } public static void query(ArrayList queryList) { try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); for (String query : queryList) { send.debug(Main.plugin, query); stmt.addBatch(query); } stmt.executeBatch(); stmt.close(); } catch (SQLException e) { System.err.println(e.getMessage()); } } public static HashMap> selectAll(String query) { send.debug(Main.plugin, query); HashMap> Result = new HashMap<>(); try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); int columns = rs.getMetaData().getColumnCount(); while (rs.next()) { ArrayList columnList = new ArrayList<>(); for (int i = 1; i <= columns; i++) { columnList.add(rs.getString(i)); } Result.put(rs.getString(1), columnList); } rs.close(); stmt.close(); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return Result; } public static String select(String query) { send.debug(Main.plugin, query); String Ausgabe = ""; try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { Ausgabe = String.valueOf(rs.getString(1)); } rs.close(); stmt.close(); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return Ausgabe; } public static int count(String query) { send.debug(Main.plugin, query); int count = 0; try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { count++; } rs.close(); stmt.close(); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return count; } public static ArrayList selectRow(String query) { send.debug(Main.plugin, query); ArrayList Result = new ArrayList<>(); try (Connection con = ds.getConnection()) { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); int columns = rs.getMetaData().getColumnCount(); while (rs.next()) { for (int i = 1; i <= columns; i++) { Result.add(rs.getString(i)); } } rs.close(); stmt.close(); } catch (SQLException ex) { System.err.println(ex.getMessage()); } return Result; } public static void close() { if (ds != null) ds.close(); } }