Return 从数据库中排序键值对 - Java
Return ordered key value pairs from database - Java
我正在尝试从 derby 数据库中的键值对创建联赛 table - 数据库中的行只有两列,TeamName 和 Goals。
我需要将它们添加到我的 GUI class 以便我可以将键和值设置为联盟中的 JLabels table。按照总目标从上到下排序。
据我所知,LinkedHashMap 和 TreeSet 应该都可以帮助我。
我目前拥有的代码:
public TreeMap viewTeams(){
TreeMap teamData = new TreeMap();
String viewTeams = "SELECT * FROM HUI.TEAM";
connectToDatabase(dbName);
try {
stmt = dbConnection.createStatement();
rs = stmt.executeQuery(viewTeams);
} catch (SQLException error) {
System.err.println("Error querying database for teams: " + error.toString());
}
try {
while (rs.next()){
teamData.put((rs.getString("TEAMNAME")), (rs.getInt("GOALSSCORED")));
}
} catch (SQLException error) {
System.err.println("Error adding players to HasMap: " + error.toString());
}
return teamData;
}
在 TeamDB 中 class
public void updateLeagueTable(){
TeamDB tdb = new TeamDB("FootManDatabase");
TreeMap teamData = tdb.viewTeams(); // Do I need this new TreeMap?
// How do I Iterate through the pairs in descending order?
}
在 GUI 中 class
我只想让 SQL 数据库进行排序,因为这是它可以做得很好的一件事。
此外,您不能使用 TreeMap<String, Integer>
,因为那样会按团队名称而不是目标进行迭代。而且您也不能使用 TreeMap<Integer, String>
,因为它不允许重复,所以您将无法让两支球队得分相同。相反,我会使用一个列表。类似于以下内容(但请记住正确关闭您的资源,为清楚起见,我已将其省略)。
class TeamScore {
private final String name;
private final int numGoals;
public TeamScore(String name, int numGoals) {
this.name = name;
this.numGoals = numGoals;
}
// getters...
}
public List<TeamScore> viewTeams() throws SQLException {
List<TeamScore> teamData = new ArrayList<>();
String viewTeams = "SELECT * FROM HUI.TEAM ORDER BY GOALSSCORED DESC";
connectToDatabase(dbName);
stmt = dbConnection.createStatement();
rs = stmt.executeQuery(viewTeams);
while (rs.next()) {
teamData.add(new TeamScore(rs.getString("TEAMNAME"), rs.getInt("GOALSSCORED"));
}
return teamData;
}
我正在尝试从 derby 数据库中的键值对创建联赛 table - 数据库中的行只有两列,TeamName 和 Goals。
我需要将它们添加到我的 GUI class 以便我可以将键和值设置为联盟中的 JLabels table。按照总目标从上到下排序。
据我所知,LinkedHashMap 和 TreeSet 应该都可以帮助我。
我目前拥有的代码:
public TreeMap viewTeams(){
TreeMap teamData = new TreeMap();
String viewTeams = "SELECT * FROM HUI.TEAM";
connectToDatabase(dbName);
try {
stmt = dbConnection.createStatement();
rs = stmt.executeQuery(viewTeams);
} catch (SQLException error) {
System.err.println("Error querying database for teams: " + error.toString());
}
try {
while (rs.next()){
teamData.put((rs.getString("TEAMNAME")), (rs.getInt("GOALSSCORED")));
}
} catch (SQLException error) {
System.err.println("Error adding players to HasMap: " + error.toString());
}
return teamData;
}
在 TeamDB 中 class
public void updateLeagueTable(){
TeamDB tdb = new TeamDB("FootManDatabase");
TreeMap teamData = tdb.viewTeams(); // Do I need this new TreeMap?
// How do I Iterate through the pairs in descending order?
}
在 GUI 中 class
我只想让 SQL 数据库进行排序,因为这是它可以做得很好的一件事。
此外,您不能使用 TreeMap<String, Integer>
,因为那样会按团队名称而不是目标进行迭代。而且您也不能使用 TreeMap<Integer, String>
,因为它不允许重复,所以您将无法让两支球队得分相同。相反,我会使用一个列表。类似于以下内容(但请记住正确关闭您的资源,为清楚起见,我已将其省略)。
class TeamScore {
private final String name;
private final int numGoals;
public TeamScore(String name, int numGoals) {
this.name = name;
this.numGoals = numGoals;
}
// getters...
}
public List<TeamScore> viewTeams() throws SQLException {
List<TeamScore> teamData = new ArrayList<>();
String viewTeams = "SELECT * FROM HUI.TEAM ORDER BY GOALSSCORED DESC";
connectToDatabase(dbName);
stmt = dbConnection.createStatement();
rs = stmt.executeQuery(viewTeams);
while (rs.next()) {
teamData.add(new TeamScore(rs.getString("TEAMNAME"), rs.getInt("GOALSSCORED"));
}
return teamData;
}