我正在尝试使用以下代码更新我的数据库表:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我启动应用程序并尝试升级数据库时,我得到以下异常:
...Caused by: java.lang.IllegalStateException: getWritableDatabase called recursively
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何解决这个问题以及究竟是什么导致它?
谢谢
Bri*_*uis 23
不要打电话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);
}
Run Code Online (Sandbox Code Playgroud)
为什么?当您调用getWritableDatabase()OpenHelper检测到数据库需要更新时,它会启动您看到的递归警告.换句话说,你在onUpgrade().你打电话getWritableDatabase(),看到需要升级.如果不是支票,你就会onUpgrade()无限期地回到原点.
| 归档时间: |
|
| 查看次数: |
5638 次 |
| 最近记录: |