У меня проблема с запросом на Android. Я сохранил в таблице большой json (около 9 МБ) и теперь мне что вернуть. Таблица выглядит так:
Title | Date | Data
mytitle | 1590656361397 | {..-json...}
Это тот запрос, который я делаю:
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("select " + DATE + ", " + DATA + " from " + TABLE + " where " + TITLE + " = '" + im_title + "'", null);
И запрос действительно работает, как здесь проверено
Log.i("App", "Cursor count " + cursor.getCount());
Result:
I/App: Cursor count 1
Итак, если я продолжу работу со своим кодом, я ожидаю, что он будет работать, однако я получаю ошибку
try{
cursor.moveToFirst();
Long date = cursor.getLong(0);
String json = cursor.getString(1);
Log.i("App", date + ", " + json);
}catch(Exception e){
Log.e("App", e.toString());
}
Result:
E/CursorWindow: Failed to read row 0, column 0 from a CursorWindow which has 0 rows, 2 columns.
E/App: java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
Это правильный код? Так я всегда использовал курсоры. Может это из-за большого json? Я также получаю это предупреждение, когда делаю это:
W/CursorWindow: Window is full: requested allocation 8926312 bytes, free space 2096708 bytes, window size 2097152 bytes