我正在进行登录和注册系统,如果需要检查用户是否已经退出,那么我在我的数据库处理程序中编写了这个函数来检查它。
public boolean checkIfUserExits(String username){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_NAME + " WHERE username=" + "\"" + username + "\"";
Cursor cursor = db.rawQuery(query, null);
if(cursor.getCount() <= 0){
cursor.close();
return false;
}
cursor.close();
return true;
}
但问题是,如果我总是得到一个真实的。 谢谢你的帮助。
答案 0 :(得分:0)
嗯,确实存在:
从您发布的其他功能(可以在修订历史记录中访问它,所以在发布内容之前仔细检查,因为即使您编辑它也会保持不变)。
user = new User(username, password, email);
dbHandler.createUser(user);
if(dbHandler.checkIfUserExits(username) == true){
您可以删除== true
,这是多余的。无论如何,您创建用户,然后检查它是否存在。当然它确实如此,你刚刚创建它。
简单但错误的修复方法是首先检查,然后创建用户。不幸的是,如果出于某种原因,两个程序同时执行此操作,则很可能它们都会看到用户不存在,并且都继续存在。
您可能想要做的就是尝试创建用户,无论如何,然后检查它是否有效。我不了解这种环境,但肯定你应该能够检测到完整性约束违规。
答案 1 :(得分:-2)
可以确定您的光标为空且无法计算成员...我的应用程序使用了类似的方法,但它更完整,可以更好地控制错误。
您可以看到以下代码:
public boolean exists_the_ColumnParameter(String query){
//Declaration of variables
Cursor a3 = null;
try{
a3 = database.rawQuery(query,null);
a3.moveToFirst();
if(a3.getString(0).equals("")){
a3.close();
return false;
}
else{
a3.close();
return true;
}
}
catch (CursorIndexOutOfBoundsException ex){
return false;
} catch (Exception ex){
Log.e("-- BDD.exists_the_ColumnParameter --","Exception",ex);
return false;
}
}
告诉我,如果我帮助你并做好编程!