Java 如果播放器没有';我还没有宝石 来自
这是我当前的代码,我尝试执行检查,看看他们是否有任何令牌,然后设置令牌,如果他们没有,但它似乎只是在运行代码,无论我是否设置它Java 如果播放器没有';我还没有宝石 来自,java,mysql,Java,Mysql,这是我当前的代码,我尝试执行检查,看看他们是否有任何令牌,然后设置令牌,如果他们没有,但它似乎只是在运行代码,无论我是否设置它 @EventHandler public void onJoin(PlayerJoinEvent event) throws SQLException { Player player = event.getPlayer(); String name = player.getName(); Statement statement = connect
@EventHandler
public void onJoin(PlayerJoinEvent event) throws SQLException {
Player player = event.getPlayer();
String name = player.getName();
Statement statement = connection.createStatement();
ResultSet res = statement.executeQuery("SELECT * FROM tokens WHERE PlayerName = '" + name + "';");
res.next();
int tokens = 0;
if (res.getString("PlayerName") == null) {
Statement statement = connection.createStatement();
statement.executeUpdate("INSERT INTO tokens (`PlayerName`, `tokens`) VALUES ('" + name + "', '0');");
tokens = 1000;
} else {
tokens = res.getInt("tokens");
}
player.sendMessage(tokens + " Tokens.");
}
检查行是否存在的方式是错误的。请查看您的查询:
"SELECT * FROM tokens WHERE PlayerName = '" + name + "'
如果表中不存在播放机,此查询将返回0行,而不是播放机名称为null
的行,就像您现在检查的那样。相反,您应该检查ResultSet
是否有一行:
ResultSet res = statement.executeQuery("SELECT * FROM tokens WHERE PlayerName = '" + name + "';");
int tokens = 0;
if (res.next()) {
Statement statement = connection.createStatement();
statement.executeUpdate("INSERT INTO tokens (`PlayerName`, `tokens`) VALUES ('" + name + "', '0');");
tokens = 1000;
} else {
tokens = res.getInt("tokens");
}
在做任何事情之前,首先要解决的是——停止将您的值直接放入SQL。使用参数化SQL。看见