Jump to content

Datenbank Verbindung schlägt fehl


Rednael
 Share

Recommended Posts

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 to comment
Share on other sites

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 to comment
Share on other sites

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 ;).

Edited by Rednael
Link to comment
Share on other sites

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))");
Link to comment
Share on other sites

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 to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B