0

開発を容易にするために DatabaseHelper を作成しました。データベースのバージョンが 1 から 2 にアップグレードされている場合、onUpgrade が呼び出され、テーブルが削除されます。これにより、テーブルに保存されているデータも削除されるのでしょうか? つまり、テーブルに保存されているデータは失われますか?

これがコードです。

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS notes");
        onCreate(db);
    }
}
4

3 に答える 3

2

テーブルを削除すると、そのデータもすべて削除されます。保持したい場合は、最初にテーブルの名前を変更し、新しいテーブルを作成してから、古いテーブルから新しいテーブルにデータを選択します。

于 2013-09-27T17:25:50.530 に答える
2

コードを見ると、はい、データベースの現在のテーブルが失われ、新しい空のテーブルnotesが作成されます。

したがって、データベースをアップグレードする最善の方法は、これより前です。

  db.execSQL("DROP TABLE IF EXISTS notes");

現在のデータベースのバックアップを作成し(最も簡単な方法は、テーブルの名前を変更することです)、現在のテーブルを削除して新しいテーブルを作成する必要があります。

情報を編集/アップグレードする前に、情報のバックアップを保持することは常に良いプログラミング方法です。

于 2013-09-27T17:25:58.407 に答える
0

列に変更がある場合は、onUpgrade メソッドでテーブルを変更できます。新しいテーブルを作成する場合は、onUpgrade 内で Drop を呼び出すだけです。スキーマに変更がない場合は、onUpgrade メソッド内で何もしないでください。

于 2013-09-27T17:37:58.133 に答える