Skocz do zawartości
  • 0

Problem z MySQL w pluginie.


Pytanie

Cześć, mam taki kod umieszczony w dwóch klasach.

Spoiler

Klasa Main

Spoiler


package pl.kchc.hardcorebans;

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class HardcoreBans extends JavaPlugin implements Listener {

	private DatabaseMySQL databaseMySQL;

	public void onEnable() {
		databaseMySQL = new DatabaseMySQL("localhost", "hardcorebans",
				"root", "");

		Bukkit.getServer().getPluginManager().registerEvents(this, this);
	}

	@EventHandler
	public void onPlayerDeath(PlayerDeathEvent event) {
		final String player = event.getEntity().getPlayer().getName();

		databaseMySQL.banPlayer(player, System.currentTimeMillis());
	}
}

 

I klasa DatabaseMySQL.

Spoiler


package pl.kchc.hardcorebans;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DatabaseMySQL {

	protected Connection connection;

	public DatabaseMySQL(String host, String base, String user, String password) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection("jdbc:mysql://" + host
					+ "/" + base, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String getBannedPlayer(String player) {
		try {
			PreparedStatement statement = connection
					.prepareStatement("SELECT uuid FROM `hardcorebans` WHERE uuid='"
							+ player + "'");
			ResultSet resultSet = statement.executeQuery();

			if (resultSet.next())
				return resultSet.getString("uuid");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void banPlayer(String player, Long time) {
		try {
			PreparedStatement statement = connection
					.prepareStatement("INSERT INTO `hardcorebans` (uuid, time) VALUES ('"
							+ player + "', '" + time + "')");
			statement.executeQuery();
			statement.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

Wszystko fajnie, ale gdy gracz umrze wyskakuje błąd:

[18:55:44 WARN]: java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
[18:55:44 WARN]: 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
[18:55:44 WARN]: 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
[18:55:44 WARN]: 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
[18:55:44 WARN]: 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
[18:55:44 WARN]: 	at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:434)
[18:55:44 WARN]: 	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2174)
[18:55:44 WARN]: 	at pl.kchc.hardcorebans.DatabaseMySQL.banPlayer(DatabaseMySQL.java:42)
[18:55:44 WARN]: 	at pl.kchc.hardcorebans.HardcoreBans.onPlayerDeath(HardcoreBans.java:24)
[18:55:44 WARN]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[18:55:44 WARN]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[18:55:44 WARN]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[18:55:44 WARN]: 	at java.lang.reflect.Method.invoke(Method.java:498)
[18:55:44 WARN]: 	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306)
[18:55:44 WARN]: 	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
[18:55:44 WARN]: 	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502)
[18:55:44 WARN]: 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487)
[18:55:44 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:396)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.EntityPlayer.die(EntityPlayer.java:417)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:812)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:800)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:496)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.EntityLiving.G(EntityLiving.java:101)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.CommandKill.execute(SourceFile:40)
[18:55:44 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.command.VanillaCommandWrapper.dispatchVanillaCommand(VanillaCommandWrapper.java:108)
[18:55:44 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.command.VanillaCommandWrapper.execute(VanillaCommandWrapper.java:43)
[18:55:44 WARN]: 	at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141)
[18:55:44 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641)
[18:55:44 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
[18:55:44 WARN]: 	at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
[18:55:44 WARN]: 	at java.lang.Thread.run(Thread.java:748)

A oto struktura bazy danych:

sqlpng_qxnsqhs.png

Nie mam bladego pojęcia co może być źle.

Odnośnik do komentarza
https://skript.pl/temat/23430-problem-z-mysql-w-pluginie/
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...