如何从 PreparedStatement 获取 JDBC4ResultSet?

How can I get a JDBC4ResultSet from a PreparedStatement?

我正在为 Bungeecord 的 Minecraft 服务器编写一个全球禁止系统(在 Java 中)。当一名被禁赛的球员试图加入时,他应该被踢出并说明原因。我试图从 MySQL-table.

中找出原因

这是重要的代码:

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(
                "74[76Minepedia74]\n7bDu wurdest aus folgendem Grund gebannt:\n7c"
                        + rsn.toString()
                        + "\n7bWenn du denkst, dass es ein Versehen war, dann schreib bitte eine Email an 7cminepedia@web.de7b!");
        ev.setCancelled(true);
    }
}

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

.toString() 方法应用于 ResultSet 对象将 return ResultSet 对象本身的字符串表示形式,而不是 ResultSet 的 contents。在您的例子中,ResultSet 对象的字符串表示形式是 "com.mysql.jdbc.JDBC4ResultSet@65cda838".

您需要使用 rsn.getString(1)rsn.getString("Grund") 检索 return 当您执行 rsn.next() 时。

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

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

接着是

psn.setString(1, pn);

在你做 .executeQuery().

之前