

[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.
A kolik záznamů je v tom ResultSetu?
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 :)
Okay, tento syntax mé problémy vyřešil, děkuji za vaší snahu o pomoc. :) Zase někdy naviděnou.