저는 Eclipse (Android)에서 작업하고 있습니다. 다음 블록에서 EmployeeInt 및 RestaurantInt는 데이터 유형이고 query()는 데이터베이스에 대한 연결을 열어 결과를 파싱합니다. 쿼리 결과를 인쇄 할 때 동일한 문자열이 표시되지만 부울 값은 여전히 false입니다. 나는 문자열을 다듬기 위해 노력했지만 도움이되지 않았습니다.왜이 .equals()가 작동하지 않습니까?
public boolean verifyEmployee(String email, String password) {
ArrayList<EmployeeInt> employeeEmailID = query("SELECT employeeID FROM employees WHERE emailAddress = \'"+email+"\'");
ArrayList<EmployeeInt> employeePasswordID = query("SELECT employeeID FROM employees WHERE password = \'"+password+"\'");
String stringEmployeeEmailID = employeeEmailID.toString();
String stringEmployeePasswordID = employeePasswordID.toString();
if(stringEmployeeEmailID.equals(stringEmployeePasswordID)) {
return true;
} else {
return false;
}
}
위에서 실행하면 다음 블록 (사실상 동일)을 실행하는 것이 허위입니다.
public boolean verifyRestaurant(String email, String password) {
ArrayList<RestaurantInt> restaurantEmailID = query("SELECT restaurantID FROM restaurants WHERE emailAddress = \'"+email+"\'");
ArrayList<RestaurantInt> restaurantPasswordID = query("SELECT restaurantID FROM restaurants WHERE password = \'"+password+"\'");
String stringRestaurantEmailID = restaurantEmailID.toString();
String stringRestaurantPasswordID = restaurantPasswordID.toString();
if(stringRestaurantEmailID.equals(stringRestaurantPasswordID)) {
return true;
} else {
return false;
}
}
누구든지 내 실수를 지적 할 수 있습니까?
편집
나는이로 변경하고 일했다 :
public boolean verifyEmployee(String email, String password) {
ArrayList<EmployeeInt> employeeEmailID = query("SELECT * FROM employees WHERE emailAddress = \'"+email+"\'");
ArrayList<EmployeeInt> employeePasswordID = query("SELECT * FROM employees WHERE password = \'"+password+"\'");
int intEmployeeEmailID = employeeEmailID.get(0).getID();
int intEmployeePasswordID = employeePasswordID.get(0).getID();
if(intEmployeeEmailID==intEmployeePasswordID) {
return true;
} else {
return false;
}
}
가 나는 또한 수익률 (조건)을 사용할 수 있습니다 알고 있지만 나는 경우 일부 메시지를 추가하고 싶습니다 로그인에 실패했습니다.
게시 할 앱을 만들지 않고 있습니다. 할당. 도와 주셔서 감사합니다!
비교를 위해'ArrayList'를'String'으로 변환하는 이유는 무엇입니까? 또한 두 경우 모두'ArrayList '의 내용을 보여줄 수 있습니까? –
문제를 디버깅하려면 문제를 추적하기 전에 비교하기 전에'stringEmployeeEmailID'와'stringEmployeePasswordID'를 확인하십시오. 일반적으로이 인증 방법은 두 명의 직원이 동일한 전자 메일 주소 또는 동일한 암호를 사용하면 실패 할 수 있으므로 잘 설계되지 않았습니다. –
+'if (condition) {return true;} else {return false;}'를 사용하지 마십시오. –