Вы сравниваете 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
, предполагая, что это единственное ограничение для таблицы. В противном случае вам может потребоваться проверить ошибку, которая является проблематичной, поскольку сообщение об ошибке зависит от используемой базы данных.