Помогите Обновление игрока

  • Автор темы Автор темы SergK35
  • Дата начала Дата начала

SergK35

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Sergk35
Доброго времени суток, подскажите пожалуйста как можно обновлять игрока, если произошли какие-либо изменения в базе данных?

Имею ХэшМапу(Имя_игрока, сам объект). Если я достаю объект, который мне необходим, то значения в нем те, которые были занесены при старте плагина или те, которые были обновлены при каком-либо действии(например покупка чего-либо), но что делать, если данные были изменены не на сервера, а сразу в бд? Вот что придумал я:
Код:
public Voter getPlayer(String player) {
        Voter voter = votePlayers.get(player.toLowerCase());
        if(storageManager.selectPlayer(player) != null) {
            voter = storageManager.selectPlayer(player);
            votePlayers.put(voter.getName().toLowerCase(), voter);
        }
        return voter;
    }




(То бишь при получении игрока, мы ему присвоим значения сразу из бд)
​
Код:
public Voter selectPlayer(String playerName) {
        PreparedStatement preparedStatement = null;
        try {
            preparedStatement = StorageManager.this.connection.prepareStatement("SELECT * FROM vote WHERE player=?");
            preparedStatement.setString(1, playerName);
            ResultSet rs = preparedStatement.executeQuery();
            while (rs.next()) {
                String name = rs.getString("player");
                int amount = rs.getInt("amount");
                Voter voter = new Voter(name, amount);
                return voter;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            this.closeStatement(preparedStatement);
        }
        return null;
    }
​

Мне кажется, что такое действие не является совсем верным, потому что как минимум selectPlayer работает не асинхронно с базой. Нормально засунуть асинхронный поток в этот метод у меня не получилось. Что можете посоветовать?
 
Последнее редактирование:
Назад
Верх