2016-03-06 66 views
0

我得到一个错误,当我运行此查询:从DB浏览器Android数据库错误,从检索Blob类型。

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

数据库结构的SQLite

enter image description here

从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) 
+0

重新安装应用程序,然后重试。 –

+0

Adb拉下数据库并查看表的结构 - 我怀疑您的创建查询是错误的,或者您的表的旧版本没有该列,并且没有正确更新它。 –

+0

@ahmadaghazadeh什么应用程序?应用程序或Sqlite浏览器 – Shank

回答

0

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

然后删除并重新安装程序来做到这一点。

0

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