- Баллы
- 76
- Имя в Minecraft
- Sergk35
Доброго времени суток, подскажите пожалуйста как можно обновлять игрока, если произошли какие-либо изменения в базе данных?
Имею ХэшМапу(Имя_игрока, сам объект). Если я достаю объект, который мне необходим, то значения в нем те, которые были занесены при старте плагина или те, которые были обновлены при каком-либо действии(например покупка чего-либо), но что делать, если данные были изменены не на сервера, а сразу в бд? Вот что придумал я:
Мне кажется, что такое действие не является совсем верным, потому что как минимум selectPlayer работает не асинхронно с базой. Нормально засунуть асинхронный поток в этот метод у меня не получилось. Что можете посоветовать?
Имею ХэшМапу(Имя_игрока, сам объект). Если я достаю объект, который мне необходим, то значения в нем те, которые были занесены при старте плагина или те, которые были обновлены при каком-либо действии(например покупка чего-либо), но что делать, если данные были изменены не на сервера, а сразу в бд? Вот что придумал я:
Код:
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 работает не асинхронно с базой. Нормально засунуть асинхронный поток в этот метод у меня не получилось. Что можете посоветовать?
Последнее редактирование: