Hallo zusammen!
Ich schreibe momentan ein Plugin für Minecraft. Da sollen (per Befehl) Daten in eine Datenbank geschrieben (und ausgelesen) werden. Die Verbindung zur Datenbank passt, die läuft, und die Table wird erstellt.. Allerdings kann ich nicht in die Datenbank inserten.
Das wäre die Fehlermeldung:
Hier mal mein Code:
Wieso geht in der COMMAND_petitionplugin.java das
nicht?
Eclipse zeigt mir keine Fehler an.
Ich schreibe momentan ein Plugin für Minecraft. Da sollen (per Befehl) Daten in eine Datenbank geschrieben (und ausgelesen) werden. Die Verbindung zur Datenbank passt, die läuft, und die Table wird erstellt.. Allerdings kann ich nicht in die Datenbank inserten.
Das wäre die Fehlermeldung:
Code:
[Server thread/ERROR]: Error occurred while enabling PetitionPlugin v0.1 (Is it up to date?)
java.lang.NullPointerException
at me.John_H_Smith.Main.MySQL.update(MySQL.java:49) ~[?:?]
at me.John_H_Smith.Main.Main.ConnectMySQL(Main.java:39) ~[?:?]
at me.John_H_Smith.Main.Main.onEnable(Main.java:21) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:292) ~[spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.loadPlugin(CraftServer.java:361) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.enablePlugins(CraftServer.java:321) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at net.minecraft.server.v1_9_R1.MinecraftServer.t(MinecraftServer.java:411) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at net.minecraft.server.v1_9_R1.MinecraftServer.l(MinecraftServer.java:376) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at net.minecraft.server.v1_9_R1.MinecraftServer.a(MinecraftServer.java:331) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at net.minecraft.server.v1_9_R1.DedicatedServer.init(DedicatedServer.java:269) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:527) [spigot_server.jar:git-Spigot-e6f93f4-d884ab3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_91]
Hier mal mein Code:
Java:
package me.xxx.Main;
import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public Logger log = this.getLogger();
@Override
public void onEnable() {
this.getCommand("petition").setExecutor(new COMMAND_petitionplugin());
initConfig();
ConnectMySQL();
}
@Override
public void onDisable() {
CloseMySQL();
}
public static MySQL mysql;
public void ConnectMySQL() {
String dhost = this.getConfig().getString("PetitionPlugin.mysql.host");
String duser = this.getConfig().getString("PetitionPlugin.mysql.user");
String ddatabase = this.getConfig().getString("PetitionPlugin.mysql.database");
String dpassword = this.getConfig().getString("PetitionPlugin.mysql.password");
mysql = new MySQL(dhost, ddatabase, duser, dpassword);
mysql.update("CREATE TABLE IF NOT EXISTS PEs (id INT(20) AUTO_INCREMENT, Name varchar(20), Message varchar(30), CoordsX double(9,6) SIGNED, CoordsY double(9,6) SIGNED, CoordsZ double(9,6) SIGNED, primary key (id))");
}
public void CloseMySQL() {
mysql.close();
}
private void initConfig() {
this.reloadConfig();
this.getConfig().options().header("Mach mal was da drin");
this.getConfig().addDefault("PetitionPlugin.mysql.host", "localhost");
this.getConfig().addDefault("PetitionPlugin.mysql.database", "database");
this.getConfig().addDefault("PetitionPlugin.mysql.user", "user");
this.getConfig().addDefault("PetitionPlugin.mysql.password", "password");
this.getConfig().options().copyDefaults(true);
this.saveConfig();
}
}
Java:
package me.xxx.Main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class COMMAND_petitionplugin implements CommandExecutor {
public static MySQL mysql;
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label,
String[] args) {
if(cmd.getName().equalsIgnoreCase("petition")) {
Player player = (Player) sender;
mysql.update("INSERT INTO PEs(Name,Message) VALUES (Test1,Test2)");
return true;
}
return false;
}
}
Java:
package me.xxx.Main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQL {
private String HOST = "";
private String DATABASE = "";
private String USER = "";
private String PASSWORD = "";
private Connection con;
public MySQL(String host, String database, String user, String password) {
this.HOST = host;
this.DATABASE = database;
this.USER = user;
this.PASSWORD = password;
connect();
}
public void connect() {
try {
con = DriverManager.getConnection("jdbc:mysql://" + HOST + ":3306/"
+ DATABASE + "?autoReconnect=true", USER, PASSWORD);
System.out.println("[PE] Datenbank verbunden!");
} catch (SQLException e) {
System.out.println("[PE] Verbindung Fehlgeschlagen! Grund: " + e.getMessage());
}
}
public void close() {
try {
if (con != null) {
con.close();
System.out.println("[PE] Datenbank geschlossen!");
}
} catch (SQLException e) {
System.out.println("[PE] Verbindung schließen fehlgeschlagen! Grund: " + e.getMessage());
}
}
public void update(String qry) {
try {
Statement st = con.createStatement();
st.executeUpdate(qry);
st.close();
} catch (SQLException e) {
connect();
System.err.println(e);
}
}
public boolean hasConnection() {
if(con != null) {
return true;
}
return false;
}
public ResultSet query(String qry) {
ResultSet rs = null;
try {
Statement st = con.createStatement();
rs = st.executeQuery(qry);
} catch (SQLException e) {
connect();
System.err.println(e);
}
return rs;
}
}
Wieso geht in der COMMAND_petitionplugin.java das
Java:
mysql.update("INSERT INTO PEs(Name,Message) VALUES (Test1,Test2)");
Eclipse zeigt mir keine Fehler an.