0

現在、私の onUpgrade メソッドは次のようになっています。

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS questions");
    onCreate(db);
}

これは現在、アプリが市場から更新されるたびに新しいテーブルを作成します。

テーブルが削除され、必要なときにのみ再作成または変更されるのを防ぐにはどうすればよいですか?

4

3 に答える 3

1

データベースのバージョンを確認する必要があります。onUpgrade()現在のバージョンが新しいバージョンより古い場合にのみ実行されます。コンストラクターのサブクラスがSQLiteOpenHelper毎回同じパラメーター(最後のパラメーター)を渡すかどうかを確認します。この場合、データベースのバージョンが同じままであるとデータベースは再作成されません、onUpgrade()は実行されません。

public DBHelper(Context context) {
      super(context, DB_NAME, null, DB_VERSION);
}
于 2013-01-13T20:32:28.120 に答える
1

テーブルが削除され、必要なときにのみ再作成または変更されるのを防ぐにはどうすればよいですか?

メソッドの現在の本体を削除onUpgrade()し、より洗練されたアップグレード プロセスを実行します: テーブルの追加、テーブルの削除、テーブルの変更など。

于 2013-01-13T20:38:24.313 に答える
0

この解決策を参照してください(ポルトガル語):

すべてのデータを含む一時テーブルを作成し (バックアップ)、他のデータベース テーブルを削除/作成し、一時テーブル データを新しい構造にコピー (再挿入) するだけです。機能するソリューションですが、おそらくすべての場合ではありません。

于 2013-05-19T03:46:37.620 に答える