1. 程式人生 > >greenDao3.0及以上資料庫升級並保留原資料庫資料,詳細教程

greenDao3.0及以上資料庫升級並保留原資料庫資料,詳細教程

在Android中很多時候都會用到本地資料庫,greendao作為一個高效優化好的資料庫框架被廣大Android開發人員所使用,好了,其他不多說,直接進主題。

首先在 entity中新增你所想新增的新增欄位。rebuild一下專案。

1.在app下的build.gradle檔案的repositories內新增紅色部分下面程式碼:

buildscript {
    repositories {
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
    
} }
2.新增依賴
dependencies {compile 'org.greenrobot:greendao:3.2.0'compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.1.0'
}
3.自定義MySQLiteOpenHelper 類,並且繼承DaoMaster.OpenHelper ,然後重寫onUpgrade方法,注意:onUpgrade有2個方法,
我們重寫
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
第一個引數為SQLiteDatabase 的方法,而不是
Database。
程式碼如下:
public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
        super(context, name, factory);
    }
    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        MigrationHelper.migrate
(db,LocationDao.class,RegistrationFormDao.class); } }
其中:MigrationHelper.migrate(db,LocationDao.class,RegistrationFormDao.class); 裡面引數為SQLiteDatabase db,
後面緊接著的引數為你所有的Dao類。
4.找到DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(),"testdb",null);
修改為
MySQLiteOpenHelper devOpenHelper = new MySQLiteOpenHelper(MyApplication.getContext(),"testdb",null);
5。修改資料庫版本號,+1。
執行更新即可。如果對你有幫助,請點個贊!!!!