0

Androidでデータベースのアップグレードに最適に対処する方法に関するドキュメントはありますか?

私はアプリケーションを開発していて、自分の電話でテストしています。すべて正常に動作します。過去数回のデプロイで、テーブルにいくつかの列を追加する必要がありました。また、古いデータベースバージョンが特定のデータベースバージョンよりも小さい場合に実行されるアップグレードステートメントが原因です。

ただし、別の電話でアプリケーションを実行しようとすると、以前のバージョンがないために列が追加されないため、エラーが発生します。

データベースのアップグレードとバージョン管理を処理する方法に関するベストプラクティスまたはドキュメントはありますか?特定の質問をグーグルで調べてみましたが、それではあまり良い結果が得られませんでした。

現在使用している関連コードは次のとおりです。

private static final int DATABASE_VERSION = 11;

private static class LocalLoginDatabaseHelper extends SQLiteOpenHelper {
    LocalLoginDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d(TAG,DATABASE_CREATE);
        db.execSQL(DATABASE_CREATE);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if(oldVersion < 11) {
            Log.d(TAG + "Upgrade",DATABASE_ALTER);
            db.execSQL(DATABASE_ALTER);
        }
    }
}

ありがとう

4

2 に答える 2

1

Androidでデータベースのアップグレードに最適に対処する方法に関するドキュメントはありますか?

を使用するSQLiteOpenHelperと、スキーマの変更がいつ検出されるかを制御できるため、データベースをアップグレードできます。


アップデート

ただし、別の電話でアプリケーションを実行しようとすると、以前のバージョンがないために列が追加されないため、エラーが発生します。

コラムDATABASE_CREATEも必要です。新規インストールの場合(またはユーザーがアプリでデータのクリアを行った後)、既存のデータベースがないためonCreate()、ではなくonUpgrade()が呼び出されます。

于 2012-09-20T11:57:54.257 に答える
1

恥知らずなプラグイン:この問題が解決したことは知っていますが、SqliteOpenHelper / ContentProvider / Contract APIを簡単に作成し、移行を通じてアップグレードを管理できるDSLのオープンソースセットに取り組んでいますhttp://robotoworks.com/mechanoid-plugin/ mechanoid-db

それはまだ非常に初期の頃であり、私はドキュメントを書くのに忙しいですが、Androidでsqliteを使用している人にとってはすでに便利であり、それを使用する人が増えるとそれがより良くなります:)

于 2012-09-20T12:53:14.877 に答える