0

Android プロジェクトでGreenDAOを使用しています。GreenDAO に問題があります。既存のテーブルに変更を加え、バージョンを変更して変更を移行すると、GreenDAO はすべてのテーブルを削除します。GreenDAO で生成されたファイルを変更しようとしましたが、正しい手順ではなく、機能しませんでした。

@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
  Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");
  dropAllTables(db, true);
  onCreate(db);
}

上記のコードでコメントしようとしましdropAllTablesたが、機能しませんでした。コードを実行するとコードが再生成されますか? 誰もそれを修正する方法を知っていますか?

編集:
この問題に関連する質問はほとんど見られませんでしたが、それらは古いスレッドであり、役に立ちませんでした。

4

1 に答える 1

1

DaoMaster.DevOpenHelperの独自の実装を拡張して提供できますonUpgrade

独自の DevOpenHelper を実装する

public class MyOpenHelper extends DaoMaster.DevOpenHelper {

    //..
    //override the constructor here by calling super
    //..

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        switch(oldVersion) {
        case 1:
            //upgrade logic from version 1 to 2
            /* break was omitted by purpose. */
        case 2:
            //upgrade logic from version 2 to 3
            /* break was omitted by purpose. */
        case 3:
            //upgrade logic from version 3 to 4
            break;
        default:
            throw new IllegalStateException(
                    "unknown oldVersion " + oldVersion);
        }
    }
}

クラスをインスタンス化する

DaoMaster.DevOpenHelper helper = new MyOpenHelper(this, databaseName, null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);

詳細については、こちらの方法を確認してください

于 2016-11-21T03:50:56.703 に答える