我试图从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列。
答案 0 :(得分:0)
如果这行:
int weightColumnIndex = cursor.getColumnIndex(PetEntry.COLUMN_PET_WEIGHT);
返回-1
,则原因可能是以下之一:
在查询中,您没有选择列PetEntry.COLUMN_PET_WEIGHT
,因此结果中不存在该列。
您的表不包含名为PetEntry.COLUMN_PET_WEIGHT
的列!
也许您是在第一次运行应用程序后在表的架构中进行了更改,例如在SQLiteOpenHelper
类中添加或重命名了此列,并且您认为此更改将立即反映到表中,但这不是它的方式作品。
每次运行应用程序时,不会调用onCreate()
方法。
仅当数据库尚不存在时才调用它(或者,当您更改数据库的版本时,可以从onUpgrade()
方法直接调用它)。
因此,从要测试它的设备上卸载该应用程序,以便删除数据库并重新运行。
这样,将重新创建数据库,并执行onCreate()
方法以创建具有SQLiteOpenHelper
类中定义的最新架构的表。