저는 android studio에서 SQLite Database로 작업하고 있습니다. 내에서 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의 return 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