Курсор: не удалось прочитать строку 0, столбец 0 из CursorWindow, который имеет 0 строк, 2 столбца, но строка существует - PullRequest
0 голосов
/ 28 мая 2020

У меня проблема с запросом на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...