【发布时间】:2015-09-17 13:17:58
【问题描述】:
可能这里的某个地方可以回答我的问题,但如果它存在,我找不到它。 这是我的问题: 我在资产文件夹中提供了数据库。当我想更新我的应用程序时,因为我在特定表中添加了更多行,我增加了数据库版本,调用 this.getWritableDatabase();并调用 onUpgrade,至此一切正常。 但接下来呢? 这是我的 onUpgrade 函数:
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
if(i < i2) {
SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null,SQLiteDatabase.OPEN_READWRITE);
db.execSQL("attach database ? as newdb", new String[]{DB_PATH + DB_NAME}); // I have to attach new version of db to the old one and then i can go on
db.execSQL("delete from GAME");
db.execSQL("INSERT INTO GAME SELECT * FROM newdb.GAME");
db.close();
}
这给了我一个错误,我的数据库被锁定 - 在线:
db.execSQL("INSERT INTO GAME SELECT * FROM newdb.GAME");
我尝试了很多不同的场景,但我就是做不到。 如果有人能帮我让它工作,我会很高兴;)
【问题讨论】:
标签: android database sqlite upgrade