0

アプリケーションのデータベースを更新しました。ただし、新しいデータベース構造は古いデータベースと互換性がないため、市場からアプリケーションを更新したユーザーには、アプリを起動するたびにクラッシュが発生します。アプリをアンインストールしてインストールするように依頼するのはよくありません。インストール時に1回だけ操作を実行する必要があります。つまり、古いデータベースをクリアして新しいデータベースを作成します。これは、アプリが起動するたびに呼び出すのではなく、インストール時またはアプリが初めて起動するときにのみ呼び出す必要があります。

私は自分の状況を明確に定義したと思いますが、今ここからどこに行くのですか?アプリをアンインストールしてインストールするようにユーザーにバグを報告する必要がありますか、それとも私が求めたことを実行する可能性がありますか?

4

3 に答える 3

2

データベースのバージョンを変更し、クラスをオーバーライドonUpgradeするだけです。DatabaseHelper

    private static final int DATABASE_VERSION = 2;

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
                + ", which will destroy all old data");

        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATION);
        onCreate(db);
    }
于 2012-10-04T06:54:59.730 に答える
1

のonUpgrade()メソッドを実装してみません SQLiteOpenHelperか?このクラスは、便利なメソッドを提供onCreate()onUpgrade()ます。

ここを参照してください:onUpgradeメソッドが呼び出されたことはありますか?

またはここ:Androidでアプリをアップグレードした後にテーブルスキーマを更新する方法は?

于 2012-10-04T06:55:26.297 に答える
1

まず第一に、古いデータベースをクリアして新しいデータベースを作成することは本当に悪い考えです(ユーザーはデータが失われるのを見て本当に腹を立てます)。

以前のデータを新しい列などで常にアップグレードするようにしてください。データ全体をクリアするのではなく、データをクリアせずにテーブルの構造を常に変更するようにしてください。

もう1つは、DBHelperクラスのonUpgrade()メソッドで新しいデータベースにアップグレードできることです。

于 2012-10-04T06:55:51.997 に答える