1 回答

TA贡献2037条经验 获得超6个赞
你正在比较String一个Integer对象。这总是产生false:
public static boolean checkMemberID(int memberId) ... {
int memberId
...
String id;
...
if(id.equals(memberId)){
编译后的版本 id.equals(memberId)是一样的id.equals(Integer.valueOf(memberId))
无论如何都不需要检查列值,因为您的WHERE子句不会接受此列中具有不同值的行。(这里与字符串文字相比对我来说似乎很奇怪。你确定列的类型是文本类型吗?)
以下内容应该足够了:
public static boolean checkMemberID(int memberId) throws SQLException, ClassNotFoundException {
Connection conn=DBConnection.getDBConnection().getConnection();
Statement stm = conn.createStatement();
ResultSet rst = stm.executeQuery("SELECT * FROM members WHERE memberId='"+memberId+"'");
return rst.next();
}
此外,如果值不存在但当前存在,则addMember您将结果视为返回。true
SQLIntegrityConstraintViolationException请注意,假设这是表的唯一约束,尝试插入查询立即捕获 a 实际上可能更好。否则您可能需要检查有问题的错误,因为错误消息取决于所使用的数据库。
添加回答
举报