Android 数据库错误,检索 Blob 类型。

Android database error, from retrieving Blob type.

我在 运行 此查询时遇到错误:

public List<byte[]> getImageBlobs() {
        List<byte[]> list = new ArrayList<>();
        Cursor cursor = database.rawQuery("SELECT imageBlob FROM boardgames", null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            list.add(cursor.getBlob(0));
            cursor.moveToNext();
        }
        cursor.close();
        return list;
}

来自 DB Browser for SQLite 的数据库结构

来自logcat:

03-06 10:43:51.342 10469-10469/? E/SQLiteLog: (1) no such column: imageBlob
03-06 10:43:51.343 10469-10469/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.boardgamehelper.boardgamehelper, PID: 10469
                                                   android.database.sqlite.SQLiteException: no such column: imageBlob (code 1): , while compiling: SELECT imageBlob FROM boardgames
                                                       at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

当数据库结构发生变化时需要删除并重新创建数据库。 重新安装应用程序并重试。

然后删除并重新安装该程序即可。

清除数据不是一个好主意。如果您的应用程序已经投入生产。您应该使用 ALTER 语句并在 class 扩展 SQLiteOpenHelper 的 onUpgrade() 中添加列 每当您更改表架构时,不要忘记更新数据库版本。