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()