我在eclipse(android)工作。在以下块中,员工和餐厅Int是数据类型,并且Query()打开与数据库的连接并解析结果。当我打印查询结果时,我会得到相同的字符串,但是布尔值仍然是错误的。我已经尝试修剪字符串,但这无济于事。
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;
}
}
我知道我也可以使用返回(条件),但是如果登录失败,我想添加一些消息,例如:
System.err.println("email address and password do not correspond");
我不是要发布一个应用程序,而仅用于作业。感谢您的帮助!
您在ArrayList
上调用toString()
。两个不同的ArrayList
对象将返回两个不同的toString()
字符串。您可能是要获取ArrayList的第一个元素,然后将其转换为字符串。
示例
EmployeeInt
是您的自定义对象。在我的示例中,我认为它具有一些int
字段,可以用getID()
进行重新架。
ArrayList<EmployeeInt> idList = query("SELECT employeeID FROM employees WHERE emailAddress = '"+email+"'");
int ID = idList.get(0).getID();
stringEmployeeEmailID = String.valueOf(ID);
这可能比代码更容易阅读:
-
query()
返回ArrayList
- 我们提取
ArrayList
的第一个元素 - 这是您遗漏的部分 - 我们获得该元素的ID
- 我们将其转换为字符串