我想创建一个离线词典应用程序,有时需要更新,旧数据库将被新的替换.这就是我想做的事情,我用SQLiteAssetHelper图书馆做了类似的事情:
注意: SQLiteAssetHelper将数据库从assets文件夹复制到app data文件夹中
public class MyDb extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "db.sqlite";
private static final int DATABASE_VERSION = 1;
public MyDb(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想更新数据库,在将新db.sqlite文件放入assets文件夹后,我操纵了我的代码,如下所示:
public class MyDb extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "db.sqlite";
private static final int DATABASE_VERSION = 2;
public MyDb(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译并运行时,它说:无法将只读数据库从版本1升级到2
解决办法是什么?
通过清除应用数据,它将正常工作......
对不起,我的英语不好...
您应该setForcedUpgrade();在构造函数之后调用:
public class MyDb extends SQLiteAssetHelper {
private static final int DATABASE_VERSION = 2;//+1
public MyDb(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setForcedUpgrade();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2636 次 |
| 最近记录: |