我正在使用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;
}
出於調試目的,我已經在這個地方加選擇查詢。 當調試器擊中這些點時,db.insert的返回id返回一些值(即新插入值的id)。但select查詢不返回任何有用的東西(它返回mCount爲-1)。 我也試過下面的查詢,但結果是一樣的。
returnCursor = db.query(TABLE_NAME_MOODS,
projection,
selection,
selectionArgs,
null,
null,
sortOrder);
問題在哪裏。
你獲得了一個遊標'returnCursor',但你實際上沒有做任何事情。你有沒有嘗試迭代這個遊標? –
@TimBiegeleisen在調試窗口中顯示returnCursor的所有細節。它只返回列名,mCount爲-1; –
@EnigmaticMind遊標,直到你做了什麼,它會顯示這一點。嘗試添加'returnCursor.getCount();'行,然後移動以返回null;在調試中。你會看到計數。你也可以嘗試'returnCursor.movetoFirst()'作爲一行(等)。你也可能會發現這有用[有沒有任何方法可以幫助解決常見的SQLite問題?](https://stackoverflow.com/questions/46642269/are-there-any-methods-that-assist-with-resolving-common -sqlite-issues) – MikeT