Android 非工作查询

Android 非工作查询,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在android studio中使用SQLite数据库。我的onCreate代码: @Override public void onCreate(SQLiteDatabase db) { String CREATE_MOODS_TABLE = "CREATE TABLE " + TABLE_NAME_MOODS + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_MOODS

我正在android studio中使用SQLite数据库。我的onCreate代码:

   @Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_MOODS_TABLE = "CREATE TABLE " + TABLE_NAME_MOODS + "("
            + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_MOODS + " TEXT NOT NULL)";
    db.execSQL(CREATE_MOODS_TABLE);
}
我的问题是:

@Override
public Uri insert(@NonNull Uri uri,  ContentValues values) {

    final SQLiteDatabase db = mMindsDbHelper.getWritableDatabase();
    final SQLiteDatabase db2 = mMindsDbHelper.getReadableDatabase();
    long id = db.insert(TABLE_NAME_MOODS, null, values);
    String query = "SELECT * FROM "+ TABLE_NAME_MOODS;
    Cursor returnCursor;
    returnCursor = db2.rawQuery(query, null);
    return null;
}
出于调试目的,我在此处添加了select查询。 当调试器到达这些点时,db.insert的返回id返回一些值,即。新插入值的id。但是select查询不返回任何有用的内容,它将mCount返回为-1。 我也尝试了下面的查询,但结果是一样的

  returnCursor = db.query(TABLE_NAME_MOODS,
                    projection,
                    selection,
                    selectionArgs,
                    null,
                    null,
                    sortOrder);
问题在哪里

但是select查询不返回任何有用的内容,它将mCount返回为-1

rawQuery编译查询,但不执行查询。因此,对于尚未执行的查询,计数为-1。这同样适用于查询,因为它本质上只是rawQuery的包装器。已执行且未匹配任何记录的查询的计数将设置为0


要实际执行使用rawQuery编译的查询的至少一个步骤,您需要调用moveTo。。。返回的游标上的方法。例如,moveToFirst。

您获得了一个游标returnCursor,但实际上并没有对其执行任何操作。你试过迭代这个游标吗?@TimBiegeleisen在调试窗口中它显示了returnCursor的所有细节。它只返回列名,mCount为-1@在你用它做点什么之前,它会显示这一点。尝试添加行returnCursor.getCount;然后移动以返回null;在调试中。然后你会看到伯爵。您也可以尝试returnCursor.movetoFirst作为一行等。您可能还会发现这个有用的@MikeT Yes bro,您是对的。谢谢你的帮助,非常感谢。这节省了我的时间。