我正在尝试使用以下代码更新我的数据库表:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = "ALTER TABLE names ADD COLUMN hidden integer default 0";
dbHelper.getWritableDatabase().rawQuery(query, null);
}但是,当我启动应用程序并尝试升级数据库时,我得到了以下异常:
...Caused by: java.lang.IllegalStateException: getWritableDatabase called recursively有没有人知道我如何解决这个问题,以及是什么导致了这个问题?
谢谢
发布于 2012-02-06 05:09:09
别给getWritableDatabase()打电话。使用传入的参数:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String query = "ALTER TABLE names ADD COLUMN hidden integer default 0";
db.rawQuery(query, null);
}为什么?当您调用getWritableDatabase()时,OpenHelper会检测到数据库需要更新,因此它会启动您看到的递归警告。换句话说,你在onUpgrade()中。你调用getWritableDatabase(),它认为需要升级。如果不是因为检查,你就会回到onUpgrade(),而且是无限的。
https://stackoverflow.com/questions/9152907
复制相似问题