为什么索引显示为-1?

时间:2019-03-29 11:29:02

标签: android android-sqlite

我试图从sqlite数据库中获取索引,我得到了所有数据,但只有一个值显示-1并且应用程序崩溃了

 sessionStorage.removeItem('shown');
 sessionStorage.clear();

这是日志消息的结果

V /重量指数:->-1

这是logcat中的错误

  

03-29 15:24:10.456 21309-21309 / com.example.android.pets   E / CursorWindow:无法从CursorWindow读取第0行,第-1列   有1行5列。

1 个答案:

答案 0 :(得分:0)

如果这行:

int weightColumnIndex = cursor.getColumnIndex(PetEntry.COLUMN_PET_WEIGHT);

返回-1,则原因可能是以下之一:

  • 在查询中,您没有选择列PetEntry.COLUMN_PET_WEIGHT,因此结果中不存在该列。

  • 您的表不包含名为PetEntry.COLUMN_PET_WEIGHT的列!
    也许您是在第一次运行应用程序后在表的架构中进行了更改,例如在SQLiteOpenHelper类中添加或重命名了此列,并且您认为此更改将立即反映到表中,但这不是它的方式作品。
    每次运行应用程序时,不会调用onCreate()方法。
    仅当数据库尚不存在时才调用它(或者,当您更改数据库的版本时,可以从onUpgrade()方法直接调用它)。
    因此,从要测试它的设备上卸载该应用程序,以便删除数据库并重新运行。
    这样,将重新创建数据库,并执行onCreate()方法以创建具有SQLiteOpenHelper类中定义的最新架构的表。