我想用新数据库替换以前的数据库。要做到这一点,我
但是当我重新启动应用程序时,user_version再次更改为0.为什么它不保存" 1"作为新的user_version?或者我必须在编译应用程序之前更改新数据库的user_version。
这是我的代码。
MySQLiteHelper db = MySQLiteHelper.instance();
int oldversion = db.getInteger("PRAGMA user_version");
Toast.makeText(MainActivity.this,oldversion + "", Toast.LENGTH_SHORT).show();
if (oldversion < 1) {
upgradeDB();// delete previous db and copy new one.
db.execSQL("PRAGMA user_version = 1");
int oldversion = db.getInteger("PRAGMA user_version");
Toast.makeText(MainActivity.this,oldversion + "", Toast.LENGTH_SHORT).show();
}
修改
void upgradeDB(){
db.renameDataBase();
db.copyDataBase();
db = MySQLiteHelper.instance();
MySQLiteUpdateHelper dbOld = MySQLiteUpdateHelper.instance();
int saved = dbOld.getInteger("select value from info where name='saved'");
int bookmark = dbOld.getInteger("select value from info where name='bookmarks'");
db.execSQL("UPDATE info set value = '" + saved + "' WHERE name = 'saved'");
db.execSQL("UPDATE info set value = '" + bookmark + "' WHERE name = 'bookmarks'");
File to = new File(db.DB_PATH, "old");
if (to.exists()) {
to.delete();
}
}
答案 0 :(得分:0)
如果您不关心旧数据库的内容,那么您甚至不应该尝试升级它。只需为新数据库版本提供一个新文件名,以便可以简单地复制它(使用SQLiteAssetHelper),并删除旧文件。