繁体   English   中英

将 BLOB 类型检索到 Byte

[英]Retrieving a BLOB type into Byte

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));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM