如果应用已经在PlayStore上,如何迁移不同版本的SQLite数据库?

时间:2018-08-14 09:47:56

标签: android sqlite android-sqlite

我有一个已经发布了V1的应用程序,其中有一个SQLite数据库,但是在V2中我更新了数据库架构,我的问题是我如何在不丢失已经存在的数据的情况下迁移数据库。

3 个答案:

答案 0 :(得分:0)

public class DatabaseHelper extends SQLiteOpenHelper {

// Database Version
private static final int DATABASE_VERSION = 1; //<<**Increase the database 
version** here 
//when you make any database schema changes
....

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed
    db.execSQL("DROP TABLE IF EXISTS " + Note.TABLE_NAME); // take the respective action

    // Create tables again
    onCreate(db);
}

}

....... 上述更改将正常运行,但是如果您已经启动了应用程序,则可以选择以下选项: 1)进行强制更新 2)如果您在标头中保留了会话令牌(在命中API的同时),那么请与后端团队讨论,为无效令牌提供404错误代码(任何),然后对该错误代码进行注销处理,因此当用户登录时,所有数据将新鲜存储。 (如果您没有任何注销处理,则不建议采用这种方式。)

答案 1 :(得分:0)

  

我的问题是这如何在不丢失数据的情况下迁移数据库   已经存在。

有可能。您应该首先阅读onUpgrade

  

public abstract void onUpgrade(SQLiteDatabase db,                       int oldVersion,                       int newVersion)

在需要升级数据库时调用。实现应使用此方法删除表,添加表或执行其他任何升级到新架构版本所需的操作。

示例

如果您添加新列,

if (!class_exists('Proxy')){}

答案 2 :(得分:0)

您必须覆盖onUpgradeSQLiteOpenHelper方法

请参考以下要点以获取示例-https://gist.github.com/mlnkrish/eeed1cfa9c11f6d37841