Исключение при запросе изображения из базы данных - PullRequest
0 голосов
/ 28 декабря 2018

Мой Курсор всегда равен -1, когда я отправляю запрос в мою базу данных (sqlite) для загрузки изображения.

public Cursor getData(int id){

        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM " + TABLE_NAME + " WHERE ID = " + id;
        Log.d(TAG, query);
        Cursor data = db.rawQuery(query, null);
        return data;
}

В результате происходит сбой приложения, и этот журнал в logcat:

ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.master.tobias.phono, PID: 10721 android.database.CursorIndexOutOfBoundsException: индекс -1 запрошен, с размером 1

Редактировать:Запрос отлично работает с браузером БД для SQLite.

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

попробуйте это

public Cursor getData(int id){

        SQLiteDatabase db = this.getWritableDatabase();
        String query = "SELECT * FROM " + TABLE_NAME + " WHERE ID = " + id;
        Log.d(TAG, query);
        Cursor cursor= db.rawQuery(query, null);
        while(cursor.moveToFirst()){
          //get your value over here
        }
        return data;
}
0 голосов
/ 28 декабря 2018

Также полезно взглянуть на документацию по методам Android, так как она предоставляет больше информации о том, что метод ожидает в качестве параметров и будет возвращать.Во-первых, db.rawQuery

Запускает предоставленный SQL и возвращает курсор над набором результатов.
SQLiteDatabase

Что касаетсякурсор, вам нужно проверить существование объекта с помощью переменной Cursor.Это можно сделать с помощью следующего метода:

cursor.moveToFirst();

Переместить курсор на следующую строку.
Этот метод вернет false, если курсор уже находится за последней записью в наборе результатов.
Курсор

Этот метод вернет логическое значение, которое вы можетеиспользовать для дальнейшей проверки.Если логическое значение равно false, курсор не содержит никаких данных / объектов внутри.Если это правда, вы знаете, что у вас есть данные.

Следовательно, вам не хватает этой функциональности, где вам нужно переместить объект в первую строку, что позволит вам определить, был ли запрос пустили нет.

0 голосов
/ 28 декабря 2018

Попробуйте cursor.moveToFirst() перед доступом к данным курсора

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...