Я пишу плагин Bukkit для моего сервера Minecraft, и мой код либо содержит ошибку в том, как я написал классы и методы, либо, как я предполагаю, в части Result set.
Он не обнаруживает, что мой проигрыватель уже находится в таблице SQL. Это в методе hasPlayer.
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player p = event.getPlayer();
SQLCheckPlayer pCheck = new SQLCheckPlayer();
pCheck.p = p;
boolean i = pCheck.hasPlayer();
if (i == false) {
boolean n = pCheck.addPlayer();
if (n == true) {
p.sendMessage("You have been added to our database");
} else {
p.sendMessage("There was errors in trying to add you to our database");
}
} else {
p.sendMessage("You are in our database");
}
}
класс SQLCheckPlayer
public class SQLCheckPlayer {
Player p;
public boolean hasPlayer() {
UUID pUUID = p.getUniqueId();
String query = "SELECT playerID FROM playerInfo;";
try {
if (sqlConnection.getDatabaseConnection() != null) {
Statement st = sqlConnection.getDatabaseConnection().createStatement();
ResultSet rs = st.executeQuery(query);
if (rs != null) {
do{
if(pUUID.toString() == rs.toString()) {
st.close();
Bukkit.broadcastMessage("Player successfully added");
return true;
}
} while(rs.next());
}
st.close();
} else {
Bukkit.broadcastMessage("Database connection is null");
return false;
}
return false;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Bukkit.broadcastMessage("Sql Exception");
return false;
}
}
public boolean addPlayer() {
UUID pUUID = p.getUniqueId();
try {
PreparedStatement st = sqlConnection.getDatabaseConnection().prepareStatement("INSERT INTO playerInfo (playerID, playerName, playerDiamonds) VALUES (?, ?, ?)");
st.setString(1, pUUID.toString());
st.setString(2, p.getDisplayName());
st.setInt(3, 0);
st.executeUpdate();
st.close();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
}
После того, как я был добавлен в базу данных (что он может успешно сделать), всякий раз, когда я присоединяюсь, он должен сказать «Вы находитесь в нашей базе данных», но он всегда звучит как «При попытке добавить вас в нашу базу данных возникли ошибки» , На распечатке трассировки стека печати было сказано, что код пытается снова добавить меня в базу данных, чего не удалось, потому что я поместил уникальную вкладку в столбец playerUUID.