首页 > 解决方案 > 在数据库中保存玩家手

问题描述

因此,我想将playerID(位于名为Player的不同表中)添加到表(PlayersHand)中,我还想将 CardsID、CardsName 和 typeOfDeck 添加到该表(PlayersHand)中。

我尝试使用 RETURN_GENERATED_KEYS 来获取 PlayersID,因为它是我的表Player中的自动增量列

我需要的其他信息可以通过遍历玩家列表来获取他们的手牌和卡片 ID、姓名、牌组类型。

public void saveHand(List<Player> players) throws SQLException{

    try (java.sql.Connection conn = DriverManager.getConnection(Connectie.JDBC_URL);
            PreparedStatement query = conn.prepareStatement(INSERT_KAARTEN_IN_HAND)) {

        /*  private static final String INSERT_KAARTEN_IN_HAND = "INSERT INTO ID222177_g74.KaartenSpeler (idPlayer, idCard, cardName, deck)"
        + "VALUES (?,?,?, ?)";*/
        int count = 0;
        int teller = 0;
        for (Player s : players) {
            do {
                query.setInt(1, getPlayerID());
                query.setInt(2, s.getHand().get(teller).getKaartID());
                query.setString(3, s.getHand().get(teller).getNaam());
                query.setString(4, s.getHand().get(teller).getSoort());    query.addBatch();
                teller++;
                count++;
                if (count % 100 == 0 || count == players.size()) {
                    query.executeBatch();
                }
            } while (teller <= s.getHand().size());
        }
    }
}

在另一个查询中,我使用它来获取 playerid

try (ResultSet generatedKeys = query.getGeneratedKeys()) {
    if (generatedKeys.next()) {
        setPlayerID(generatedKeys.getInt(1));
    }

基本上一个玩家只能持有5张卡,或者更少,我想将它们保存在数据库中。所以对于每个玩家,我想保存他所有的牌。

现在我得到 1 名玩家,如果他手里有 4 张牌,我喜欢 3 张牌。但随后它会停止并且不会影响其他玩家。

所以应该像

PLayer 1 card1 cardName decktype
PLayer 1 card2 cardName decktype
PLayer 1 card3 cardName decktype
PLayer 1 card4 cardName decktype

PLayer 2 card1 cardName decktype
PLayer 2 card2 cardName decktype
PLayer 2 card3 cardName decktype
PLayer 2 card4 cardName decktype

PLayer 3 card1 cardName decktype
PLayer 3 card2 cardName decktype
PLayer 3 card3 cardName decktype
PLayer 3 card4 cardName decktype

标签: javamysqlsql

解决方案


推荐阅读