gpt4 book ai didi

java - 为什么这个MySQL不能正确执行?

转载 作者:行者123 更新时间:2023-11-30 00:30:40 25 4
gpt4 key购买 nike

当 Minecraft Spigot (Bukkit) 服务器中发生事件时,我尝试更新表。出于某种原因,我只是不明白为什么这行不通。不管怎样,这些字段根本不会改变。

这是完成这项工作的代码:

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);
}
}

显然我做了一些非常错误的事情,但我就是不知道是什么。通常我可以弄清楚如何在网络开发中做这样的事情,但这让我抓狂。

如果您需要任何额外信息,我很乐意帮忙,尽管询问。现在,任何人都可以看到关于为什么这行不通的任何严重错误吗?

谢谢。

最佳答案

使用 executeUpdate 而不是 execute 来运行更新查询。尽管执行 API 文档指出它应该适用于更新,但大多数情况下并非如此。

这是您需要更改的内容

来自

killerSQL.execute();

killerSQL.executeUpdate();

与另一个类似。

同时提交并关闭您的结果集、语句和连接。

关于java - 为什么这个MySQL不能正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com