1 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊
你正在比較String一個Integer對象。這總是產(chǎn)生false:
public static boolean checkMemberID(int memberId) ... {
int memberId
...
String id;
...
if(id.equals(memberId)){
編譯后的版本 id.equals(memberId)是一樣的id.equals(Integer.valueOf(memberId))
無論如何都不需要檢查列值,因?yàn)槟腤HERE子句不會接受此列中具有不同值的行。(這里與字符串文字相比對我來說似乎很奇怪。你確定列的類型是文本類型嗎?)
以下內(nèi)容應(yīng)該足夠了:
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();
}
此外,如果值不存在但當(dāng)前存在,則addMember您將結(jié)果視為返回。true
SQLIntegrityConstraintViolationException請注意,假設(shè)這是表的唯一約束,嘗試插入查詢立即捕獲 a 實(shí)際上可能更好。否則您可能需要檢查有問題的錯誤,因?yàn)殄e誤消息取決于所使用的數(shù)據(jù)庫。
添加回答
舉報