Link to home
Start Free TrialLog in
Avatar of Gamer 08
Gamer 08

asked on

Mysql / Java - Connection Error

Java Code :
package me.DevGamer08.nexus.handler;

import me.DevGamer08.nexus.Start;
import org.bukkit.Bukkit;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class DatabaseHandler {
    private String username;
    private String passwort;
    private String adress;
    private String database;
    private String logTag = "[Server: %name% / %date% at %time%] -> %adress% -> %port% | %log%";
    Timer timer = new Timer();
    private int port;

    private Connection con;

    public DatabaseHandler(String name, String passwort, String ipadress, int port, String database) {
        this.adress = ipadress;
        this.passwort = passwort;
        this.username = name;
        this.port = port;
        this.database = database;
    }

    public void addServer(String name, String motd, int rconport, String rconpw, String serverip, String status, int playeron, int playermax, String serverid, int serverport) throws SQLException {
        try {
            loggData(name, serverip, serverport, "Seccefully added to Chache!");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        openConnection();
        PreparedStatement ps = queryUpdate("INSERT INTO server (Name, Motd, Rconport, Rconpw, Serverip, Status, Playeron, Playermax, Serverid, Serverport) VALUES (?,?,?,?,?,?,?,?,?,?)");
        ps.setString(1, name);
        ps.setString(2, motd);
        ps.setInt(3,rconport);
        ps.setString(4, rconpw);
        ps.setString(5, serverip);
        ps.setString(6, status);
        ps.setInt(7, playeron);
        ps.setInt(8, playermax);
        ps.setString(9, serverid);
        ps.setInt(10, serverport);
        ps.executeUpdate();
        ps.close();

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                closeConnection();
            }
        }, 2000);
    }

    public void loggData(String name, String ip, int port, String Log) throws SQLException {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat timef = new SimpleDateFormat("HH:mm:ss");
        SimpleDateFormat datef = new SimpleDateFormat("dd:MM:YYYY");
        String time = timef.format(cal.getTime());
        String date = datef.format(cal.getTime());

        this.database = "logs";
        openConnection();
        String log = logTag.replaceAll("%log%", Log).replaceAll("%name%", name).replaceAll("%date%", date).replaceAll("%time%", time).replaceAll("%adress%", adress).replaceAll("%port%", port +"");

        PreparedStatement ps = queryUpdate("INSERT INTO logs (LogDate, LogID, Servername, Log) VALUES (?,?,?,?)");
        ps.setString(1, date + "->" + time);
        ps.setString(2, Bukkit.getServer().getServerId() + "X" + date);
        ps.setString(3, name);
        ps.setString(4, log);
        ps.executeUpdate();
        ps.close();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                closeConnection();
                Bukkit.getConsoleSender().sendMessage(Start.prefix + "AN ERROR OCCURRED -> ERROR LOG ID: \"" + Bukkit.getServer().getServerId() + "X" + date + "\", CONTACT THE DEVELOPER ON SPIGOT AND SEND HIM YOUR ERROR CODE!");
                try {
                    loggData(Bukkit.getServer().getServerId(), Bukkit.getServer().getIp(), Bukkit.getServer().getPort(), log);
                } catch (SQLException e) {
                    Bukkit.getConsoleSender().sendMessage(Start.prefix + "AN ERROR OCCURRED -> ERROR #1 : CAN'T SEND ERROR REPORT: " + e.getStackTrace());
                }
            }
        }, 2000);
    }

    public Connection openConnection() {
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");

                Connection con = (Connection) DriverManager.getConnection(
                        "jdbc:mysql://" + adress + ":" + port + "/" + database, username, passwort);
                this.con = con;
                return con;
            } catch (SQLException e) {
                Bukkit.getConsoleSender().sendMessage(Start.prefix + "AN ERROR OCCURRED -> ERROR #3 : CAN'T CONNECT TO DATABASE!" );
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        return null;
    }
    public void open() {

        this.con = this.openConnection();

    }

    public Connection getConnection() {
        return con;
    }

    public boolean hasConnection() {
        try {
            return this.con != null | this.con.isValid(1);
        } catch (SQLException e) {
            return false;
        }
    }

    public PreparedStatement queryUpdate(String query) {
        Connection con = this.con;
        PreparedStatement st = null;
        try {
            st = con.prepareStatement(query);
            st.executeUpdate();
        } catch (SQLException e) {
            System.err.println("Failed to sent update " + query + "!");
        }
        return st;
    }

    public void closeRessources(ResultSet rs, PreparedStatement st) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

    }

    public void closeConnection() {
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            con = null;
        }
    }
}

Open in new window


I set the Connection Adress and Port in the Main Class ;D

Error Code:
[23:09:35 ERROR]: Error occurred while disabling NeXusAPI v0.0.1 (Is it up to date?)
java.lang.NullPointerException
        at me.DevGamer08.nexus.handler.DatabaseHandler.queryUpdate(DatabaseHandler.java:127) ~[?:?]
        at me.DevGamer08.nexus.handler.DatabaseHandler.loggData(DatabaseHandler.java:71) ~[?:?]
        at me.DevGamer08.nexus.handler.DatabaseHandler.addServer(DatabaseHandler.java:33) ~[?:?]
        at me.DevGamer08.nexus.Start.addServer(Start.java:41) ~[?:?]
        at me.DevGamer08.nexus.Start.onDisable(Start.java:20) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:323) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:364) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:458) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:708) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
[23:09:35 INFO]: [NeXusAPI] Loading NeXusAPI v0.0.1
[23:09:35 INFO]: [NeXusAPI] Enabling NeXusAPI v0.0.1
[23:09:35 INFO]: [NEXUS-API] AN ERROR OCCURRED -> ERROR #3 : CAN'T CONNECT TO DATABASE!
[23:09:35 WARN]: Failed to sent update INSERT INTO logs (LogDate, LogID, Servername, Log) VALUES (?,?,?,?)!
[23:09:35 INFO]: [NEXUS-API] AN ERROR OCCURRED -> ERROR #3 : CAN'T CONNECT TO DATABASE!
[23:09:35 WARN]: Failed to sent update INSERT INTO server (Name, Motd, Rconport, Rconpw, Serverip, Status, Playeron, Playermax, Serverid, Serverport) VALUES (?,?,?,?,?,?,?,?,?,?)!
[23:09:35 INFO]: [NEXUS-API] AN ERROR OCCURRED -> ERROR #3 : CAN'T CONNECT TO DATABASE!
[23:09:35 WARN]: Failed to sent update INSERT INTO logs (LogDate, LogID, Servername, Log) VALUES (?,?,?,?)!
[23:09:37 INFO]: [NEXUS-API] AN ERROR OCCURRED -> ERROR LOG ID: "unnamedX11:05:2018", CONTACT THE DEVELOPER ON SPIGOT AND SEND HIM YOUR ERROR CODE!
[23:09:37 INFO]: [NEXUS-API] AN ERROR OCCURRED -> ERROR #3 : CAN'T CONNECT TO DATABASE!
[23:09:37 WARN]: Exception in thread "Timer-7"
[23:09:37 WARN]: java.lang.NullPointerException
[23:09:37 WARN]:        at me.DevGamer08.nexus.handler.DatabaseHandler.queryUpdate(DatabaseHandler.java:132)
[23:09:37 WARN]:        at me.DevGamer08.nexus.handler.DatabaseHandler.loggData(DatabaseHandler.java:71)
[23:09:37 WARN]:        at me.DevGamer08.nexus.handler.DatabaseHandler$2.run(DatabaseHandler.java:84)
[23:09:37 WARN]:        at java.util.TimerThread.mainLoop(Unknown Source)
[23:09:37 WARN]:        at java.util.TimerThread.run(Unknown Source)

Open in new window

>
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Guessing that this.con is null in queryUpdate. Not sure why, but generally the connection handling is poor, somewhat chaotic and could leak db resources
Avatar of Gamer 08
Gamer 08

ASKER

Okay ;C I found the Error it was a Argument Error in my MYSQL Command
This question needs an answer!
Become an EE member today
7 DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform.
View membership options
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.