Gamer 08
asked on
Mysql / Java - Connection Error
Java Code :
I set the Connection Adress and Port in the Main Class ;D
Error 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;
}
}
}
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)
>
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
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 TRIALMembers 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.