我有一个注册活动,其中用户提供了电子邮件ID,我在SQLiteDatabase中保存了他们的电子邮件ID。在保存电子邮件ID之前,我正在检查数据库中是否已存在电子邮件ID以下是我用来检查的代码。但这里的问题是它总是返回false意味着显示已经存在的电子邮件ID。请帮助。
public boolean readUser(String email){
sqLiteDatabase = userDatabaseUtility.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE "
+ COLUMN_EMAIL + " = '" + email + "'";
Log.i("LOG", selectQuery);
Cursor cursor = sqLiteDatabase.rawQuery(selectQuery, null);
if(cursor != null){
// email already exist
cursor.close();
return false;
} else {
return true;
}
}`
答案 0 :(得分:1)
您的光标可能为空但不为空。而不是
if(cursor != null) {
// email already exist
cursor.close();
return false;
} else {
return true;
}
你应该有
return cursor != null && cursor.getCount() > 0;
如果您有一个包含该电子邮件的条目,则会返回true
,否则会返回false
。
答案 1 :(得分:1)
空光标不是null
。您应该检查是否cursor.getCount() > 0
答案 2 :(得分:0)
由于您进行了分配,因此光标不会为空。您必须检查cursor.getCount()
是否大于0,这意味着光标找到了至少一个与您的电子邮件地址匹配的内容。
if(cursor.getCount()>0){
// email already exist
cursor.close();
return false;
} else {
return true;
}