Jump to content

Datenbank Verbindung schlägt fehl


Rednael

Empfohlene Beiträge

Hallo. Ich möchte in meinem Spigot Plugin eine Datenbankverbindung aufbauen (1.9).

Allerdings kommt ständig die auf dem Bild beschriebene Fehlermeldung, mit der ich nicht sehr viel anfangen kann.

Ich habe alles so gemacht, wie es in verschiedenen Tutorials und Videos beschrieben war, vielleicht kann mir ja jemand helfen. 

 

Bildschirmfoto 2016-03-20 um 04.17.21.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ohne den Code zu kennen ist es hier denke schwierig eine Aussage zu treffen.

Würdest du den Teil des Verbindungsaufbauen mal posten (in Code-Tags) so dass man dies mal anschauen kann? Logindaten natürlich entfernen bzw ersetzen, falls diese Hardcoded sein sollten.

 

-Yuki

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist die MySQL.java, in der ich die Verbindung aufbaue, das funktioniert, nur dass er mir beim QueryUpdate (verbindungsUpdate()) einen Fehler ausgibt.

package net.rednaelde.plugin;

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

import org.bukkit.Bukkit;

public class MySQL {

	private String dbip;
	private String dbport;
	private String dbname;
	private String dbuser;
	private String dbpassword;
	
	private Connection verbindung;
	
	public MySQL() {
		this.dbip = start.datConf.getString("datenbank.dbip");
		this.dbport = start.datConf.getString("datenbank.dbport");
		this.dbname = start.datConf.getString("datenbank.dbname");
		this.dbuser = start.datConf.getString("datenbank.dbuser");
		this.dbpassword = start.datConf.getString("datenbank.dbpassword");
		
		this.starteVerbindung();
	}
	
	public Connection starteVerbindung() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			this.verbindung = DriverManager.getConnection("jdbc:mysql://" + this.dbip + ":" + this.dbport + "/" + this.dbname + "?user=" + this.dbuser + "&password=" + this.dbpassword);
			return verbindung;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public Connection erhalteVerbindung() {
		return verbindung;
	}
	
	public void verbindungsUpdate(String query) {
		PreparedStatement ps = null;
		try {
			ps = (PreparedStatement) this.verbindung.prepareStatement(query);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
			Bukkit.getConsoleSender().sendMessage(start.prefix + "§cFehler beim Zugriff auf die Datenbank!");
		} finally {
			this.trenneRessourcen(null, ps);
		}
	}
	
	public void trenneRessourcen(ResultSet rs, PreparedStatement ps) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
				Bukkit.getConsoleSender().sendMessage(start.prefix + "§cFehler beim Trennen der Datenbank-Verbindung!");
			}
		}
		if (ps != null) {
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
				Bukkit.getConsoleSender().sendMessage(start.prefix + "§cFehler beim Trennen der Datenbank-Verbindung!");
			}
		}
	}
	
	public void trenneVerbindung() {
		try {
			verbindung.close();
		} catch (SQLException e) {
			e.printStackTrace();
			Bukkit.getConsoleSender().sendMessage(start.prefix + "§cFehler beim Trennen der Datenbank-Verbindung!");
		} finally {
			verbindung = null;
		}
	}
	
}

 

Als nächstes die Start-Klasse, in der ich beim Aktivieren überprüfen möchte, ob eine Tabelle bereits existiert und wenn nicht, sie dann zu erzeugen.

package net.rednaelde.plugin;

import java.io.File;
import java.io.IOException;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class start extends JavaPlugin {

	public static String prefix = "§7[§6§lLobbySystem§7] ";
	public static String pre = "§6§lLobby§7§l>> §a";
	public static String warnung = "§4§l!§7§l>> §c";
	public static File dtb = new File("plugins/LobbySystem", "datenbank.yml");
	public static FileConfiguration datConf = YamlConfiguration.loadConfiguration(dtb);
	private MySQL base;
	
	@Override
	public void onEnable() {
		
		loadConfig();
		
		try {
		this.base = new MySQL();
		Bukkit.getConsoleSender().sendMessage(prefix + "§aVerbindung zur Datenbank aufgebaut!");
		} catch (Exception e) {
			Bukkit.getConsoleSender().sendMessage(prefix + "§cVerbindung zur Datenbank fehlgeschlagen!");
		}

		this.base.verbindungsUpdate("CREATE TABLE IF NOT EXISTS mc_spieler (uuid varchar(30), name varchar(30)");
		
		registerEvents();
		registerCommands();
		
		Bukkit.getConsoleSender().sendMessage(prefix + "§aDas Plugin wurde eingeschaltet");
		
	}
	
	@Override
	public void onDisable() {
		Bukkit.getConsoleSender().sendMessage(prefix + "§cDas Plugin wurde ausgeschaltet");
	}
	
	public void loadConfig() {
		datConf.options().copyDefaults(true);
		datConf.addDefault("datenbank.dbip", "datenbank.ip");
		datConf.addDefault("datenbank.dbport", "3306");
		datConf.addDefault("datenbank.dbname", "Datenbank");
		datConf.addDefault("datenbank.dbuser", "Benutzer");
		datConf.addDefault("datenbank.dbpassword", "Passwort");
		try {
			datConf.save(dtb);
		} catch (IOException e) {
			Bukkit.getConsoleSender().sendMessage(prefix + "§cDie Datei §eplugins/datenbank.yml §ckonnte nicht geladen werden!");
		}
	}
	
	public MySQL erhalteDatenbank() {
		return this.base;
	}
	
	public void registerEvents() {
		
	}
	
	public void registerCommands() {
		
	}
	
}

 

 

Das ist das einzige, was ich bisher habe.

Ich hoffe, ihr könnt mir dabei helfen ;).

bearbeitet von Rednael
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb boomer41:

this.base.verbindungsUpdate("CREATE TABLE IF NOT EXISTS mc_spieler (uuid varchar(30), name varchar(30)");

=>


this.base.verbindungsUpdate("CREATE TABLE IF NOT EXISTS mc_spieler (uuid varchar(30), name varchar(30))");

 

Vielen Dank ;)

Ich hab es jetzt nach etwas Probieren auch rausbekommen, war gestern wohl einfach zu müde zum Schreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B