• 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!

Top 3 Spieler

V

Verschraubt

Guest
Hallo Community!
Ich benötige eine Methode, die mir 3 Spieler angibt, die die meisten Coins gesammelt haben.
Die Spieler uuid (uuid) sowie die Anzahl der Coins (coins) werden in einer MySQL Datenbank (coins) abgespeichert.
Nun meine Frage: Wie bekomme ich die 3 Spieler aus der Datenbank raus?

Mein vergeblicher Versuch:
Code:
public static String getTopTenCoins() {
       
        String name = null;

        try {
            ResultSet rs = MySQL.Query("SELECT TOP(3) * FROM coins ORDER BY coins DESC");
            if (rs.next()) {
                int x = rs.getInt(1);
                ResultSet rs2 = MySQL.Query("SELECT uuid FROM coins WHERE coins='" + x + "'");
                if (rs2.next()) {
                    name = Bukkit.getPlayer(rs2.getString(1)).getName();
                   
                }

            }
        } catch (SQLException e) {
            System.out.println("FEHLER");
        }
        return name;
    }



Ich möchte anmerken, dass ich mich so gut wie garnicht mit MySQL auskenne...
 
V

Verschraubt

Guest
Was mir noch aufgefallen ist:
Code:
[23:48:12 INFO]: FEHLER

Das beruft sich auf eine Zeile:
Code:
    public static String getTopTenCoins() {
      
        String name = null;
      
      

        try {
            ResultSet rs = MySQL.Query("SELECT * FROM coins ORDER BY coins DESC LIMIT 3");
            if (rs.next()) {
                int x = rs.getInt(1);
                ResultSet rs2 = MySQL.Query("SELECT uuid FROM coins WHERE coins='" + x + "'");
                if (rs2.next()) {
                    name = Bukkit.getPlayer(rs2.getString(1)).getName();
                  
                }

            }
        } catch (SQLException e) {
            System.out.println("FEHLER");
        }
        return name;
    }

Da muss irgendetwas nicht stimmen
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Ich glaub du solltest erstmal die Grundlagen mit MySQL lernen, du bekommst ein ResultSet zurück dass deine Anfrage enthält. Das was ich dir da gepostet hab gibt dir die Top 3 Spieler zurück, ich weiß nicht was der if-Block danach soll. Ich hab aber auch ehrlich gesagt keine Lust dir da fertigen Code zu geben. 1. Weil ich keinen fertigen Code hab und 2. wil ich der Meinung bin, dass du das auch selbst lernen kannst, sonst musst du bei der nächsten Query wieder im Forum fragen. Wenn du PHPMyAdmin oder was anderes verwendest kannst du dort deine Query ja auch schon ausprobieren.

Und weil ich's grad noch gesehen habe: Informier dich über SQL Injections, sonst hast du bald Sicherheitslücken in deinem Server.
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Programme, die du aus solchen schnellen Lösungen zusammensetzt haben den Ruf und bestätigen diesen, am eine ein kaum zu skalierender, minderwertig effizienter Flickenteppich zu sein. Fang lieber klein an und mach es dann richtig. Wenn du dich nicht mit MySQL auskennst, solltest du ganz klein anfangen und z.B. mit phpmyadmin erst einmal ausprobieren, wie du einen Query richtig aufbuast und auswertest.
Wenn ich deinen Code sehe merke ich sofort, dass du das irgendwo abgeschrieben hast, schon der zweite Query, den du überflüssigerweise machst, verrät dies.

Auch von Sortierverfahren und ähnlichem scheinst du nie etwas gehört zu haben. Was passiert mit deinem Code zum Beispiel, wenn zwei Spieler gleich viele Coins haben? Würde dann immer der zuerst in die Datenbank eingetragene "gewinnen"?

Mach dir solche Fragen klar und probiere an kleinen Beispielen verschiedene Szenarien aus, sonst wirst du niemals dahin kommen, dass du solche "Probleme" alleine lösen kannst.
 
Oben