如何读取存储在 sqlite 数据库中的 blob 类型?

Posted

技术标签:

【中文标题】如何读取存储在 sqlite 数据库中的 blob 类型?【英文标题】:How to read a blob type stored in sqlite database? 【发布时间】:2021-09-18 19:35:35 【问题描述】:

我成功地在 SQLite 数据库中存储了一个 blob 类型,但我以后无法正确检索它:

我是这样做的:

byte[] miniatura= cursor.getBlob(cursor.getColumnIndex(mysqliteHelper.thumbnail));

但它失败了:

java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

尽管有消息,但我认为光标不是问题,好像我将提到的指令更改为:

String cadena= cursor.getString(cursor.getColumnIndex(MySqliteHelper.fieldofTypeText));

cadena 具有应有的价值。

那么,我该怎么做才能正确获得 Blob 值?

【问题讨论】:

【参考方案1】:

我已将图像存储在 SQLite 数据库中并显示在图像视图中

为此,我已将此代码添加到数据库类中

 public byte [] get(String query)
        try 

            SQLiteDatabase db = this.getReadableDatabase();
            Cursor cursor = db.rawQuery(query,null);

            if (cursor.moveToFirst())
                return  cursor.getBlob(0);
            
            return null;

         catch (Exception e)
            e.printStackTrace();
            return null;
        
    

为了在图像视图中显示图像,我使用了这个。

    db_class = new DatabaseClass(MainActivity.this);
            byte [] img = db_class.get("SELECT IMG FROM data WHERE id = 1");
            if (img != null)
                Bitmap bitmap = convertbytearyrtobitmap(img);
                imageView.setImageBitmap(bitmap);
            

我为我的作业做了这个,你可以在 github 上看到我的代码

https://github.com/dharmik953/krishi_network_internship_project/blob/master/app/src/main/java/com/dharmik953/krishinetwork/MainActivity.java

【讨论】:

以上是关于如何读取存储在 sqlite 数据库中的 blob 类型?的主要内容,如果未能解决你的问题,请参考以下文章

更新 blob 后,Android sqlite 无法读取

如何将图像存储为 Sqlite 中的 blob 以及如何检索它?

js对象在sqlite中保存和读取

SQLite - 如何从 XML 文件插入 JPG 图像(使用 Delphi 2009)

如何使用 google gear 从 javascript 将 blob 数据存储在 sqlite 数据库中?

Octave:从 sqlite db 文件中读取 BLOB 数据