java—尝试检查mysql中是否存在值

bbmckpt7  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(197)

我正在尝试检查数据库中是否已经存在玩家名称和受邀玩家名称,我尝试以下操作:

public boolean isFriends(ProxiedPlayer inviter, ProxiedPlayer invited) {
    try {
        Statement sql = mySql.getConnection().createStatement();
        ResultSet resultSet = sql.executeQuery("SELECT * FROM `friends` WHERE `friendinviter`='" + inviter.getName() + "'`invitedfriend`='" + invited + "';");
        ProxyServer.getInstance().broadcast("1");
        if(resultSet.next()) {
            sql.close();
            resultSet.close();
            return true;
        }
        sql.close();
        resultSet.close();
        return false;
    }catch (SQLException e) {
        e.printStackTrace();
        return false;
    }
}

我试着通过在结果集中得到它返回的结果来调试它,但是代码从来没有出现过。

n8ghc7c1

n8ghc7c11#

我的第一个建议是你应该使用 PreparedStatement 对于这部分代码。
排在第二位 "SELECT * FROM friends WHERE friendinviter='" + inviter.getName() + "'invitedfriend='" + invited + "';" 部分 "'invitedfriend='" + invited 我认为需要将varchar作为参数传递,但您传递的是 ProxiedPlayer . 因此,正确的代码应该是:

"SELECT * FROM `friends` WHERE ` friendinviter`='" + inviter.getName() + "'`invitedfriend`='" + invited.getName() + "';"
pgky5nke

pgky5nke2#

语法错误:

ResultSet resultSet = sql.executeQuery("SELECT * FROM `friends` WHERE `friendinviter`='" + inviter.getName() + "' and `invitedfriend`='" + invited + "';");

你错过了where线索中的逻辑运算符。
你应该学习准备好的陈述。

相关问题