Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno [JAVA] a [MySQL] kód který naleze pouze 1 záznam.

Dobrý den, sepisuju plugin přes knihovnu Bukkit. Narazil jsem na problém že v databázi MySQL je 50 záznamů, ale když táhám tak to zobrazí pouze 1.

public HashMap<String, Integer> players = new HashMap<>();

    public void Update() {
        try {
            
            Bukkit.broadcastMessage("Searching two days old users DISABLED!!!");
            Bukkit.broadcastMessage("Executing Update");
            String query = "SELECT *, SUM(cmsg_playerstats.points) AS 'total_points' FROM `cmsg_playerstats` JOIN `cmsg_playersactivity` ON `cmsg_playersactivity`.`user` = `cmsg_playerstats`.`player` ORDER BY 'total_points'";
            Bukkit.broadcastMessage(query);
            DatabaseManager dbman = DatabaseManager.getInstance();
            PreparedStatement st = dbman.createStatement(query);
            ResultSet rs = st.executeQuery(query);
            int rank = 1;
            while(rs.next()) {
                String name = rs.getString("user");
                if(!name.contains("null")) {
                    Bukkit.broadcastMessage(name + " is " + rank);
                    players.put(name, rank);
                    Bukkit.broadcastMessage(name + " added to players with rank " + rank);
                    rank++;
                    Bukkit.broadcastMessage("rank next to " + (rank -1) + " is " + rank);
                    Bukkit.broadcastMessage("players: " + players.toString());
                }
               
            }      
            Bukkit.broadcastMessage("End of While. All Players: " + players.toString());
            Bukkit.broadcastMessage("All Rights Reserved by CzechSurvival. Alias engineer 'siOnzee'.");
            
        } catch( SQLException e){
            e.printStackTrace();
        }
        
    }
    
    public ResultSet query(String query, Statement sta) {
        try {
            if (query.toLowerCase().startsWith("select")) {
                return sta.executeQuery(query);
            } else {
                sta.executeUpdate(query);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

Vysvětlivka:

Bukkit.broadcastMessage(""); == System.out.println("");

Nejde mi do hlavy že když tam je cyklus While, že to vyhledá pouze 1 výsledek.

Předmět Autor Datum
A kolik záznamů je v tom ResultSetu?
MaSo 09.09.2013 16:11
MaSo
Je možnost to nějak zjistit? Napadá mě pouze COUNT(*) AS rows. Zeptal jsem se kamaráda a ten mi por…
sionzee 09.09.2013 16:15
sionzee
Okay, tento syntax mé problémy vyřešil, děkuji za vaší snahu o pomoc. :) Zase někdy naviděnou. poslední
sionzee 09.09.2013 16:18
sionzee

Je možnost to nějak zjistit? Napadá mě pouze COUNT(*) AS rows.

Zeptal jsem se kamaráda a ten mi poradil tento subsyntax.

"SELECT *, (SELECT SUM(points) FROM cmsg_playerstats WHERE cmsg_playerstats.player = cmsg_playersactivity.user) AS total_points FROM cmsg_playersactivity ORDER BY total_points"

Jdu to tedy vyzkoušet a dám vědět :)

Zpět do poradny Odpovědět na původní otázku Nahoru