Witam. Piszę plugin dodający UUID i nick gracza po wejściu na serwer do bazy danych, niestety wyskakują błędy wklejone poniżej, podłączenie do bazy danych działa na 100%.\
MySql connect:
public void mysqlSetup() {
host = this.getConfig().getString("host");
port = this.getConfig().getInt("port");
database = this.getConfig().getString("database");
username = this.getConfig().getString("username");
password = this.getConfig().getString("password");
table = this.getConfig().getString("table");
try{
synchronized (this) {
if(getConnection() != null && !getConnection().isClosed()) {
return;
}
Class.forName("com.mysql.jdbc.Driver");
setConnection(DriverManager.getConnection("jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database, this.username, this.password));
Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "MYSQL CONNECTED");
}
}catch (SQLException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
MySql insert:
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
createPlayer(player.getUniqueId(), player);
}
public boolean playerExists(UUID uuid) {
try {
PreparedStatement statement = plugin.getConnection()
.prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID = ?");
statement.setString(1, uuid.toString());
ResultSet results = statement.executeQuery();
if(results.next()) {
plugin.getServer().broadcastMessage(ChatColor.YELLOW + "Player found");
return true;
}
plugin.getServer().broadcastMessage(ChatColor.RED + "Player NOT founded!");
}catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public void createPlayer(final UUID uuid, Player player) {
try {
PreparedStatement statement = plugin.getConnection()
.prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID = ?");
statement.setString(1, uuid.toString());
ResultSet results = statement.executeQuery();
results.next();
if(playerExists(uuid) != true) {
PreparedStatement insert = plugin.getConnection()
.prepareStatement( "INSERT INTO " + plugin.table + "(UUID, NAME) VALUE (?, ?)");
insert.setString(1, uuid.toString());
insert.setString(2, player.getName());
insert.executeUpdate();
plugin.getServer().broadcastMessage(ChatColor.GREEN + "PLAYER INSERTED");
}
} catch (SQLException e) {
e.printStackTrace();
}
Error:
[02:13:52] [Server thread/WARN]: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '= 'e0cba1f3-ddd2-3f8c-95cd-0819f78791b6'' at line 1
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[02:13:52] [Server thread/WARN]: at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.Util.getInstance(Util.java:408)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
[02:13:52] [Server thread/WARN]: at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2011)
[02:13:52] [Server thread/WARN]: at nerez.aplikacja.MySqlInsert.createPlayer(MySqlInsert.java:50)
[02:13:52] [Server thread/WARN]: at nerez.aplikacja.MySqlInsert.onJoin(MySqlInsert.java:22)
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[02:13:52] [Server thread/WARN]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[02:13:52] [Server thread/WARN]: at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[02:13:52] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316)
[02:13:52] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[02:13:52] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529)
[02:13:52] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.PlayerList.a(PlayerList.java:173)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.LoginListener.c(LoginListener.java:154)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.LoginListener.tick(LoginListener.java:53)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.NetworkManager.a(NetworkManager.java:220)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.ServerConnection.c(ServerConnection.java:119)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1092)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:396)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:971)
[02:13:52] [Server thread/WARN]: at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:816)
[02:13:52] [Server thread/WARN]: at java.base/java.lang.Thread.run(Thread.java:834)
CreatePlayer i PlayerExist:
package nerez.aplikacja;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import javax.xml.transform.Result;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
public class MySqlInsert implements Listener {
Aplikacja plugin = Aplikacja.getPlugin(Aplikacja.class);
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
createPlayer(player.getUniqueId(), player);
}
public boolean playerExists(UUID uuid) {
try {
PreparedStatement statement = plugin.getConnection()
.prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID = ?");
statement.setString(1, uuid.toString());
ResultSet results = statement.executeQuery();
if(results.next()) {
plugin.getServer().broadcastMessage(ChatColor.YELLOW + "Player found");
return true;
}
plugin.getServer().broadcastMessage(ChatColor.RED + "Player NOT founded!");
}catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public void createPlayer(final UUID uuid, Player player) {
try {
PreparedStatement statement = plugin.getConnection()
.prepareStatement("SELECT * FROM " + plugin.table + "WHERE UUID = ?");
statement.setString(1, uuid.toString());
ResultSet results = statement.executeQuery();
results.next();
if(playerExists(uuid) != true) {
PreparedStatement insert = plugin.getConnection()
.prepareStatement( "INSERT INTO " + plugin.table + "(UUID, NAME) VALUE (?, ?)");
insert.setString(1, uuid.toString());
insert.setString(2, player.getName());
insert.executeUpdate();
plugin.getServer().broadcastMessage(ChatColor.GREEN + "PLAYER INSERTED");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}