public static void updateHistory(Client winner) {
try {
if (winner != null) {
getDatabase().newQuery("INSERT INTO tournaments (`players`, `winner`, `winnerKills`, `map`, `prize`) VALUES ('" + tournyPlayers.size() +"', '" + winner.playerName + "', '" + winner.killCount + "', 'Wilderness', '" + winner.gameScore + "')");
}
else {
getDatabase().newQuery("INSERT INTO tournaments (`players`, `winner`, `winnerKills`, `map`, `prize`) VALUES ('" + tournyPlayers.size() +"', 'None', 'None', 'Wilderness', 'None')");
}
ArrayList<Client> player = tournyPlayers;
for (int i = 0; i < player.size(); i++) {
if (player.get(i).killedByPlayer == "") {
getDatabase().newQuery("INSERT INTO tournament_players (`name`, `kills`, `killedBy`, `score`, `points`) VALUES ('" + player.get(i).playerName + "', '" + player.get(i).killCount + "', 'N/A', '" + player.get(i).gameScore + "', '" + player.get(i).gamePoints + "')");
}
else {
getDatabase().newQuery("INSERT INTO tournament_players (`name`, `kills`, `killedBy`, `score`, `points`) VALUES ('" + player.get(i).playerName + "', '" + player.get(i).killCount + "', '" + player.get(i).killedByPlayer + "', '" + player.get(i).gameScore + "', '" + player.get(i).gamePoints + "')");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
さて、私がやろうとしているのは、トーナメントに関する情報を表示する新しいトーナメント行を挿入することです。今度はトーナメントにプレイヤーを追加したいので (誰がプレイしたか)、各プレイヤーを彼のデータを含む新しい行。
しかし、ここで、挿入した現在のトーナメントにプレーヤーが一致することを確認したいと思います。サーバーがダウンしてカウントが失われる可能性があるため、サーバー側で現在のサーバーの一意の番号を作成できません。
したがって、挿入されたトーナメント テーブルの auto_increment ID を使用して、挿入されたプレーヤーと一緒に追加することを考えたので、彼の ID はトーナメントの自動インクリメント ID になります。
トーナメントに挿入したのとまったく同じデータを使用せずに自動インクリメント ID を取得する方法はありますか (同じステータスのトーナメントが 2 つある可能性があるためです)。
そうする方法はありますか?
日付と時刻を含む MD5 ハッシュをトーナメントの行に追加してから、プレイヤーの行に追加することを考えていましたが、それは良い解決策ですか?