美文网首页
Android 数据库 跨版本升级 dbflow

Android 数据库 跨版本升级 dbflow

作者: 花漫旧城夏天 | 来源:发表于2020-12-18 17:02 被阅读0次

项目用的是dbflow。不过应该都是大同小异。针对于数据库的话,比如v1新增了一个字符串test1,v2新增了test2,v3新增了test3。如果用户每个版本都进行升级的话,就不会出现问题。但是如果有些用户,是跨版本升级的,比如直接从v1升级到了v3。如果不做处理的话,就会变成已经升级到了v3,但是并没有test2这个字符串。导致程序出现问题。直接上代码

public class MyFlowSQliteOpenHelperextends FlowSQLiteOpenHelper {

public MyFlowSQliteOpenHelper(DatabaseDefinition databaseDefinition, DatabaseHelperListener listener) {

super(databaseDefinition, listener);

    }

@Override

    public void onUpgrade(@NonNull SQLiteDatabase db, int oldVersion, int newVersion) {

//        super.onUpgrade(db, oldVersion, newVersion);

        switch (oldVersion) {

case 1:

super.onUpgrade(db, 1, 2);

                Log.d("20201218", "case 1:");

            case 2:

super.onUpgrade(db, 2, 3);

                Log.d("20201218", "case 2:");

            case 3:

super.onUpgrade(db, 3, 4);

                Log.d("20201218", "case 3:");

            case 4:

super.onUpgrade(db, 4, 5);

                Log.d("20201218", "case 4:");

            case 5:

super.onUpgrade(db, 5, 6);

                Log.d("20201218", "case 5:");

            case 6:

super.onUpgrade(db, 6, 7);

                Log.d("20201218", "case 6:");

break;

        }

}

}

就是直接重写SQLiteOpenHelper。在onUpgrade方法里面判断当前版本。上面代码里,最新的版本是7。如果当前版本是1的话,就会运行1升级到2,2升级到3,3升级到4,一直升级到7。因为switch case里面,如果case里面的代码没有加上break的话,就会一直运行下去,直到遇到break。重写完这个方法之后,在init的时候修改一下初始化的参数就可以了

//初始化DBFlow

FlowManager.init(

new FlowConfig.Builder(this)

.addDatabaseConfig(DatabaseConfig.builder(AppDataBase.class).openHelper(new DatabaseConfig.OpenHelperCreator() {

@Override

                    public OpenHelpercreateHelper(DatabaseDefinition databaseDefinition, DatabaseHelperListener helperListener) {

return new MyFlowSQliteOpenHelper(databaseDefinition,helperListener);

                    }

})

.databaseName("test")

.build())

.build());

相关文章

  • Android 数据库 跨版本升级 dbflow

    项目用的是dbflow。不过应该都是大同小异。针对于数据库的话,比如v1新增了一个字符串test1,v2新增了te...

  • Android数据库框架DBFlow的使用

    DBFlow Android最好用的数据库框架——DBFLOW全面解析 DBFlow 是一个基于注解处理器开发的使...

  • Android数据库框架GreenDao 3.2.2

    android数据库框架主流开源的有:OrmLite、greenDAO 、Realm、DBFlow、LitePal...

  • 数据库架构

    数据库升级,升级信息来源:xml、json之类都可以。升级之后会应用为bean没有升级而某些功能不能使用。跨版本,...

  • Android Studio 打包卡在 app:transfor

    今天升级Android Studio 到最新的3.4正式版 因为之前是3.2.1的版本,这下跨版本有点多,Grad...

  • PostgreSQL升级方案

    PostgreSQL在默认情况下,是不能跨版本升级的(9.4, 9.5, 9.6等等这些版本跨版本升级。小版本更新...

  • sqlite数据库升级

    Android SQLite数据库版本升级的管理实现 我们知道在SQLiteOpenHelper的构造方法: su...

  • Android Room数据库版本升级随笔

    Android Room数据库版本升级随笔 遇到一个问题是需要更新播放器缓存多条数据,结果机器ota升级播放后打开...

  • 1.Dbfow使用的坑

    报错: Caused by: com.raizlabs.android.dbflow.structure.Inva...

  • Gitlab跨版本升级

    本文记录Gitlab跨版本升级的具体操作过程。 按照官方的说法,gitlab允许小版本直接升级,大版本需要阶段升级...

网友评论

      本文标题:Android 数据库 跨版本升级 dbflow

      本文链接:https://www.haomeiwen.com/subject/pqhfnktx.html