如何从PreparedStatement获取JDBC4ResultSet?

时间:2015-11-26 22:37:57

标签: jdbc resultset minecraft bungeecord

我正在为Bungeecord的Minecraft服务器(用Java编写)编写全局禁用系统。当被禁止的球员试图加入时,他应该被踢出原因。我试图从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

1 个答案:

答案 0 :(得分: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()

之前