Android Studio,Java:getCount of Cursor returns 0 在使用新创建的用户执行 checkUser 函数后
Android Studio, Java: getCount of Cursor returns 0 after checkUser function with newly created User
我有一个内存中的 SQLite 数据库,并在 运行 时间内创建了一个包含 ID、用户名和密码的行。即插入 returns 1.
之后,我 运行 使用以下函数检查已创建用户的用户凭据与输入字段中的用户凭据,这些凭据与上面创建的用户使用的凭据完全相同。 (基本上,我检查用户是否已经存在,如果不存在,我使用输入的凭据创建用户并立即检查以验证登录)
最后的 getCount 总是 returns 0,我不知道为什么。调试器显示正确的用户名和密码凭据,我开始 运行 超时...期末考试项目...
public boolean checkUser(String username, String password) {
String[] columns = new String[]{
COL_USERNAME,
COL_PASSWORD
};
SQLiteDatabase db = this.getReadableDatabase();
String selection = COL_USERNAME + " = ?" + " AND " + COL_PASSWORD + " = ?";
String[] selectionArgs = {username, password};
Cursor c = db.query(
T_USER,
columns,
selection,
selectionArgs,
null,
null,
null);
int cursorCount = c.getCount();
c.close();
db.close();
if (cursorCount > 0) {
return true;
}
return false;
}
In-memory 数据库只有在您打开数据库时才存在。要么切换到 file-based 数据库,要么保留一个对 SQLiteDatabase
的引用而不对其调用 close()
。
我有一个内存中的 SQLite 数据库,并在 运行 时间内创建了一个包含 ID、用户名和密码的行。即插入 returns 1.
之后,我 运行 使用以下函数检查已创建用户的用户凭据与输入字段中的用户凭据,这些凭据与上面创建的用户使用的凭据完全相同。 (基本上,我检查用户是否已经存在,如果不存在,我使用输入的凭据创建用户并立即检查以验证登录)
最后的 getCount 总是 returns 0,我不知道为什么。调试器显示正确的用户名和密码凭据,我开始 运行 超时...期末考试项目...
public boolean checkUser(String username, String password) {
String[] columns = new String[]{
COL_USERNAME,
COL_PASSWORD
};
SQLiteDatabase db = this.getReadableDatabase();
String selection = COL_USERNAME + " = ?" + " AND " + COL_PASSWORD + " = ?";
String[] selectionArgs = {username, password};
Cursor c = db.query(
T_USER,
columns,
selection,
selectionArgs,
null,
null,
null);
int cursorCount = c.getCount();
c.close();
db.close();
if (cursorCount > 0) {
return true;
}
return false;
}
In-memory 数据库只有在您打开数据库时才存在。要么切换到 file-based 数据库,要么保留一个对 SQLiteDatabase
的引用而不对其调用 close()
。