我的Android数据库的onUpgrade功能出错了。问题是我在一个版本中更改了一个表来添加新列,并在稍后的更新函数中查询该表。如果更新从旧版本返回,当我尝试从新表中的光标访问列时,它会出错。如果我单独运行更新,一次从一个版本更新,它可以正常工作。我该如何解决这个问题?
我得到的错误是java.lang.IllegalStateException:从第0行col -1获取字段槽失败
这是我创建新表格的方式。
db.execSQL("CREATE TABLE assignment_settings_temp("+
"id INTEGER PRIMARY KEY AUTOINCREMENT, "+
"class_id INTEGER NOT NULL, "+
"total_weight REAL)");
这是我的代码错误的地方。
obj.put("id", cursor.getInt(cursor.getColumnIndex("id")));
我尝试在创建表格后添加它
db.setTransactionSuccessful();
db.endTransaction();
db.beginTransaction();
但它仍然出错。现在的区别是新表在之后的数据库中。所以我仍然有问题,由于某种原因,光标说该列不存在。
答案 0 :(得分:0)
您是否更改了数据库版本号。据我所知,如果你想调用onUpgrade方法,你必须改变数据库版本号并改变这样的表
db.execSQL("alter table " + TABLE_NAME + " add column sample_column text");