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() 中添加列
每当您更改表架构时,不要忘记更新数据库版本。
我在 运行 此查询时遇到错误:
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() 中添加列 每当您更改表架构时,不要忘记更新数据库版本。