I'm trying to update tables when an event happens in a Minecraft Spigot (Bukkit) server. For some reason, I just can't figure out why this won't work. No matter what, the fields just won't change at all.
Here's the code doing the work:
public void processKill(final String killerName, final int killerKS, final String victimName) {
try {
Thread thread = new Thread() {
@Override
public void run() {
try (Connection c = du.makeNewConnection()) {
if (du.testWorkingConnection(c)) {
int best_killstreak = 0;
/* Process killstreak */
PreparedStatement killerKSSQL = c.prepareCall("SELECT best_killstreak FROM `player_data` WHERE name=?");
killerKSSQL.setString(1, killerName);
ResultSet killerKSRS = killerKSSQL.executeQuery();
best_killstreak = (killerKSRS.next()) ? killerKSRS.getInt(1) : 0;
/* Killer stuff */
PreparedStatement killerSQL = c.prepareStatement("UPDATE `player_data` SET kills=kills+1,deaths=deaths,points=points+?,best_killstreak=? WHERE name=?;");
killerSQL.setInt(1, config.getInt("points-per-kill"));
killerSQL.setInt(2, (best_killstreak < killerKS) ? killerKS : best_killstreak);
killerSQL.setString(3, killerName);
killerSQL.execute();
/* Victim stuff */
PreparedStatement victimSQL = c.prepareStatement("UPDATE `player_data` SET kills=kills,deaths=deaths+1,points=points-?,best_killstreak=best_killstreak WHERE name=?;");
victimSQL.setInt(1, config.getInt("minus-points-per-death"));
victimSQL.setString(2, victimName);
victimSQL.execute();
}
} catch (SQLException e) {
e.printStackTrace(System.err);
return;
}
}
};
thread.start();
thread.join();
} catch (InterruptedException e) {
e.printStackTrace(System.err);
}
}
Obviously I'm doing something terribly wrong, but I just don't know what. Usually I can figure out how to do things like this in web development, but this has me tearing my hair out.
If you need any extra information, I'd be happy to oblige, just ask. For now, can anyone see any drastic mistakes regarding why this won't work?
Thanks.