0

SQLiteOpenHelper を拡張するクラスがあります。オーバーロードされた 2 つの関数は次のとおりです。

@Override
    public void onCreate(SQLiteDatabase database) {
        database.execSQL(DATABASE_CREATE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase dataBase, int oldVersion,
            int newVersion) {

    }

OnCreate 関数で、SQL スクリプトを追加してテーブルを作成します。データベース内のテーブルをアップグレードしたい場合はどうすればよいですか。

onUpgrade 関数はいつ呼び出されますか?

oldVersion および newVersion の int 値とは何ですか?

これらにより、データベースにバージョン管理を作成できますか?

バージョン 2 のように、新しいテーブルを追加したいのですが、バージョン 3 では既存のデータベース テーブルに新しい列を追加したいのですか?

これどうやってするの ?

クラスのオブジェクトを作成するたびに onCreate 関数が呼び出されますか、それともアプリケーションがインストールされている場合にのみ Android がこれを呼び出しますか?

4

2 に答える 2

1

oldVersionおよびnewVersionint 値とは何ですか?

これらは、データベースのバージョン管理に使用されます。データベースのバージョンは、SQLiteOpenHelper のコンストラクターで渡されます。

onUpgrade関数はいつ呼び出されますか?

onUpgradeあなたがnewVersion>oldVersion

これらにより、データベースにバージョン管理を作成できますか?

はい、これらの値により、データベースのバージョンを管理できます。

バージョン 2 のように新しいテーブルを追加したいのですが、バージョン 3 では既存のデータベース テーブルに新しい列を追加したいですか?

onUpgradeメソッドで、データベースに新しいテーブルを作成するクエリを実行しますCREATE TABLE。同様に、新しい列を追加する場合は、ALTER TABLEステートメントを使用します。

クラスのオブジェクトを作成するたびに onCreate 関数が呼び出されますか、それともアプリケーションがインストールされている場合にのみ Android がこれを呼び出しますか?

OnCreateアプリケーションがまだデータベースを作成していない場合、たとえば、アプリケーションを初めて起動する場合や、データを消去した後に初めてアプリケーションを実行する場合などに呼び出されます。

于 2012-10-31T08:32:51.957 に答える
0

ここでは、データベースのバージョンを 1 に設定します。すべてのデータベースをアップグレードする必要がある場合は、2 またはそれ以外のバージョンにします。SQLiteOpenHelper は、これがデータベースの新しいバージョンであることを認識し、onUpgrade メソッドを呼び出します。 ..

private final int DATABASE_VERSION = 1;
private final String DATABASE_NAME = "yourDatabase";

private class DBOpenHelper extends SQLiteOpenHelper {

    public DBOpenHelper(Context context) {
        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_SIGNIN_FIRST);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         // you can drop table and re create it here.
    }

}
于 2012-10-31T08:20:15.497 に答える