• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Problem beim laden von Daten aus einer Datenbank

Skyriis

Kuhfänger
Registriert
11 Juni 2018
Beiträge
59
Diamanten
329
Minecraft
MrProfessor
Hallo liebes Forum,
ich bin gerade beim basteln auf ein Problem gestoßen welches ich mir nicht wirklich erklären kann.
Ich möchte der Wert der Spalte 'money' aus der Tabelle 'blutmondrpg_userdata' eines Spielers zurückgeben.
Den Spieler identifiziere ich mit seiner UUID.
java:
String sql = "SELECT blutmondrpg_userdata.money FROM blutmondrpg_userdata WHERE uuid=?;";
PreparedStatement statement = connection.prepareStatement(sql);

statement.setString(1, player.getUniqueID().toString());
LOGGER.info(statement); //zum prüfen

ResultSet result = statement.executeQuery(sql);
return result.getLong(1);
Im Log steht genau der befehl welcher ausgeführt werden soll. Also:
sql:
SELECT blutmondrpg_userdata.money FROM blutmondrpg_userdata WHERE uuid='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
Trotzdem bekomme ich folgende Fehlermeldung:
Code:
Caused by: java.sql.SQLSyntaxErrorException: 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 '?' at line 1

Vielleicht bin ich gerade etwas betriebsblind aber ich finden den Fehler nicht. :confused:
Wäre nice wenn mir jemand den Fehler zeigen könnte :D
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Ich bin zwar nicht zu gewand mit SQL, aber:
1552840698144.png

die tabelle wird bereits im "FROM" part definiert. Weshalb ich vermutte dass er ein feld namens:
table.money sucht. Die nicht existiert.
Edit:
Nach etwas Googlen scheint es so zu sein, als ob man die Tabelle nur angeben muss, wenn man mehrere Tabellen nutzt.
Und dann auch der Tabelle eine variable zuweisen muss.
In deinem fall wäre dass dann:
SELECT tabelle.money FROM blutmondrpg_userdata tabelle WHERE uuid="...";
 

Skyriis

Kuhfänger
Registriert
11 Juni 2018
Beiträge
59
Diamanten
329
Minecraft
MrProfessor
Ob man beim auswählen der Spalte noch den Tabellennamen zusätzlich verwendet oder nicht spielt bei dieser Abfrage keine Rolle.
Ich habe den Tabellennamen nur zur Sicherheit hinzugefügt um Probleme präventiv zu verhindern :)

Der SQL Befehl welcher im Log steht funktioniert. Da bin ich mir absolut sicher. Ich habe den bereits getestet.
So wie ich das sehe liegt das Problem darin, dass beim
ResultSet result = statement.executeQuery(sql);
der String SQL noch das '?' besitzt welches eigentlich durch
statement.setString(1, player.getUniqueID().toString());
ersetzt werden sollte.

Seltsam dabei ist eben, dass das '?' im Log durch die uuid ersetzt wird so wie es eigentlich sein sollte...
 

Skyriis

Kuhfänger
Registriert
11 Juni 2018
Beiträge
59
Diamanten
329
Minecraft
MrProfessor
Unwahrscheinlich, das ; gehört zur SQL-Syntax und wird an der Stelle benötigt damit alles sauber Abläuft.
Sicherheitshalber hab ich deinen Vorschlag natürlich getestet aber das Problem besteht trotztem.
 
Oben