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
的索引位于第一行(如果存在),而不是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));
}
关于java - 将BLOB类型检索为Byte,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60134869/