0

我正在为 Bungeecord(Java 中)的 Minecraftserver 编写一个全球禁令系统。当被禁止的玩家尝试加入时,他应该被踢出原因。我尝试从 MySQL 表中获取原因。

这是重要的代码:

PreparedStatement psn = null;
psn = Methoden.getConnection()
        .prepareStatement("SELECT Grund FROM BanList WHERE Name = '" + pn + "'");
if (psn != null) {
    ResultSet rsn = psn.executeQuery();
//  JDBC4ResultSet rsn = (JDBC4ResultSet) psn.executeQuery();
    if (rsn.next() == true) {
        ev.setCancelReason(
                "\2474[\2476Minepedia\2474]\n\247bDu wurdest aus folgendem Grund gebannt:\n\247c"
                        + rsn.toString()
                        + "\n\247bWenn du denkst, dass es ein Versehen war, dann schreib bitte eine Email an \247cminepedia@web.de\247b!");
        ev.setCancelled(true);
    }
}

无论我使用 ResultSet 还是 JDBC4ResultSet,我总是得到com.mysql.jdbc.JDBC4ResultSet@65cda838.

4

1 回答 1

4

将该.toString()方法应用于 ResultSet 对象将返回 ResultSet 对象本身的字符串表示形式,而不是 ResultSet 的内容。在您的情况下,ResultSet 对象的字符串表示形式是“com.mysql.jdbc.JDBC4ResultSet@65cda838”。

当您这样做时,您将希望使用rsn.getString(1)rsn.getString("Grund")检索返回的rsn.next()

顺便说一句,您也错误地使用了 PreparedStatement。你应该做

prepareStatement("SELECT Grund FROM BanList WHERE Name = ?);

其次是

psn.setString(1, pn);

在你做之前.executeQuery()

于 2015-11-27T00:42:07.553 回答