Hallo,
ich habe mir eine kleine MySQL Klasse geschrieben. Allesfunktioniert wunderbar, bis auf das abfragen von Daten.
Die MySQL-Klasse:
Das Problem besteht nun darin, dass ich immer eine NullPointerException ausgeworfen bekomme. Stimmt etwas am SQL Code nicht?
Wie immer vielen Dank im Voraus für eure Hilfe!
GermanElectronix
ich habe mir eine kleine MySQL Klasse geschrieben. Allesfunktioniert wunderbar, bis auf das abfragen von Daten.
Die MySQL-Klasse:
Java-Quellcode
- package de.germanelectronix.coins.sql;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.bukkit.entity.Player;
- import de.germanelectronix.coins.Main;
- public class SQL {
- private static Connection con;
- public static void closeConnection() {
- try {
- if (con != null && !con.isClosed()) {
- con.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public synchronized static void openConnection() {
- try {
- con = DriverManager.getConnection("jdbc:mysql://"
- + Main.sql_host
- + ":"
- + Main.sql_port
- + "/"
- + Main.sql_db
- + "?user="
- + Main.sql_user
- + "&password="
- + Main.sql_pass
- + "&autoReconnect=true");
- con.createStatement().execute("CREATE TABLE IF NOT EXISTS coins_user (uuid TEXT,coins INT)");
- System.out.println("[Coins] Successfully connected to MySQL Database!");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public synchronized static void close() {
- try {
- con.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public synchronized static boolean containsPlayer(Player p) {
- try {
- PreparedStatement sql = con.prepareStatement("SELECT * FROM coins_user WHERE uuid=?;");
- sql.setString(1, p.getUniqueId().toString());
- ResultSet rs = sql.executeQuery();
- boolean contains = rs.next();
- sql.close();
- rs.close();
- return contains;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- // ----- CUSTOM METHODS ----- \\
- public static void createAccount(Player p) {
- openConnection();
- try {
- if(containsPlayer(p) == false){
- PreparedStatement newPlayer = con.prepareStatement("INSERT INTO coins_user values(?,0);");
- newPlayer.setString(1, p.getUniqueId().toString());
- newPlayer.execute();
- newPlayer.close();
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- close();
- }
- }
- public static Integer getCoins(Player p){
- if(containsPlayer(p) == true){
- Integer coins = 0;
- try {
- PreparedStatement sql = con.prepareStatement("SELECT coins FROM coins_user WHERE uuid=?;");
- sql.setString(1, p.getUniqueId().toString());
- ResultSet result = sql.executeQuery();
- result.next();
- coins = result.getInt("coins");
- sql.close();
- result.close();
- return coins;
- } catch (SQLException e) {
- e.printStackTrace();
- return 0;
- }
- }
- return null;
- }
- }
Das Problem besteht nun darin, dass ich immer eine NullPointerException ausgeworfen bekomme. Stimmt etwas am SQL Code nicht?
Wie immer vielen Dank im Voraus für eure Hilfe!
GermanElectronix
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „GermanElectronix“ ()