1

私はAndroidとデータベースが初めてで、DatabaseIncomeOutcome.javaクラスにこのメソッドがあります:

public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + "(" +
        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_IO + " TEXT NOT NULL, " +
        KEY_NOTE + " TEXT NOT NULL);"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}

public DatabaseIncomeOutcome(Context c){
    ourContext = c;
}

public DatabaseIncomeOutcome open(){
    ourHelper = new DbHelper(ourContext);
    ourDatabase = ourHelper.getWritableDatabase();
    return this;

別のクラスからメソッドを呼び出したとき

            DatabaseIncomeOutcome entry = new DatabaseIncomeOutcome(this);
            entry.open();

どのように、いつonUpgrade呼び出されましたか? を実行するたびに呼び出されentry.open()ますか?

このスクリプトも追加したい

if (newVersion > oldVersion) {
    db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0");

onUpgrade新しい列を追加し、

次に、「onUpgrade」をどのように呼び出すべきか、将来の開発で必要になる可能性がある場合に新しい列を追加できるようにします。

ありがとう...

4

1 に答える 1

4

Android データベースに対して onUpgrade メソッドが呼び出される方法は、渡す DATABASE_VERSION に基づいています。次のコードのバージョンが現在インストールされているものと異なる場合、onUpgrade が呼び出され、データベース スキーマを変更する機会が与えられます。 ...

このメソッドは、手動で強制的に呼び出されるものではないことに注意してください。上記で説明したイベントが発生したときに、OS によって自動的に呼び出されます...

よろしく!

于 2013-06-07T21:13:56.097 に答える