在android中替换sqlite数据库

时间:2016-06-26 06:34:22

标签: android database sqlite

我想用新数据库替换以前的数据库。要做到这一点,我

  1. 检查以前的数据库user_version。
  2. 删除旧数据库。
  3. 从资产中复制新数据库。
  4. 更改新数据库的user_version。
  5. 验证新的user_version,在我的情况下为1。
  6. 但是当我重新启动应用程序时,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();
                    }
    }
    

1 个答案:

答案 0 :(得分:0)

如果您不关心旧数据库的内容,那么您甚至不应该尝试升级它。只需为新数据库版本提供一个新文件名,以便可以简单地复制它(使用SQLiteAssetHelper),并删除旧文件。