我正在尝试检查数据库中已存在的玩家姓名和受邀玩家名称,我试试这个:
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;
}
}
我尝试通过尝试获取它在结果集中返回的内容来尝试调试它,但代码从未到目前为止。
答案 0 :(得分:0)
您的语法错误:
ResultSet resultSet = sql.executeQuery("SELECT * FROM `friends` WHERE `friendinviter`='" + inviter.getName() + "' and `invitedfriend`='" + invited + "';");
你错过了线索中的逻辑运算符。
你应该学习准备好的陈述。
答案 1 :(得分:0)
我的第一个建议是你应该使用PreparedStatement
代码。
其次在行"SELECT * FROM
中我认为部分friends
WHERE friendinviter
='" + inviter.getName() + "'invitedfriend
='" + invited + "';"friends
需要将VARCHAR作为参数传递,但是您传递的是friendinviter
的实例。所以更正的代码应该是:
invitedfriend