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

最佳答案

您必须使用moveToFirst(),以便Cursor的索引位于第一行(如果存在),而不是10中使用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));
}

关于java - 将BLOB类型检索为Byte,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60134869/

10-08 21:21