如何从PreparedStatement获取JDBC4ResultSet



我正在为Bungeecord(Java)的Minecraftserver编写一个全局bansystem。当一名被禁赛的球员试图加入时,他应该被踢出理由。我试图从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[2476Minepedia2474]n247bDu wurdest aus folgendem Grund gebannt:n247c"
                        + rsn.toString()
                        + "n247bWenn du denkst, dass es ein Versehen war, dann schreib bitte eine Email an 247cminepedia@web.de247b!");
        ev.setCancelled(true);
    }
}

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

.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()之前。

最新更新