Извлечение типа BLOB в байт - PullRequest
       6

Извлечение типа BLOB в байт

0 голосов
/ 09 февраля 2020

SQLiteDatabase DB = this.getReadableDatabase (); ImageModel ImageModel = new ImageModel ();

Итак, вот мой фрагмент

    Cursor Cursor = DB.rawQuery("SELECT ImageFile FROM Image WHERE ID = '1'", null);

    if(Cursor.getCount() < 1) {
        System.out.println("NO DATA");
    }else {
        System.out.println("HAVE DATA");
        byte[] byteArray = Cursor.getBlob(1);
        ImageModel.setImage(BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length));
    }

Я получил ошибку из этого кода byte[] byteArray = Cursor.getBlob(1);

Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

1 Ответ

0 голосов
/ 09 февраля 2020

Вы должны использовать moveToFirst(), чтобы индекс Cursor располагался в 1-й строке (если он существует), и вместо 1 используйте 0 в качестве индекса в getBlob(), поскольку индексы столбцов 0 на основе:

Cursor cursor = DB.rawQuery("SELECT ImageFile FROM Image WHERE ID = '1'", null);

if(!cursor.moveToFirst()) {
    System.out.println("NO DATA");
} else {
    System.out.println("HAVE DATA");
    byte[] byteArray = cursor.getBlob(1);
    ImageModel.setImage(BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length));
}
...