私はデータベース アプリケーションを作成しています。私のプログラムは動作し、私が従ってきたチュートリアルのほとんどを理解しました。しかし、私には不明な点が 1 つあります。
SQLiteOpenHelper を拡張する MyDBHelper の内部クラスがあります。外部変数には、d と呼ばれる SQLiteDatabase が含まれます。MyDBHelper のコードは次のとおりです。
private static class MyDBHelper extends SQLiteOpenHelper {
MyDBHelper(Context c) {
super(c, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVers, int newVers) {
Log.w(TAG, "Upgrading database from version " + oldVers + " to " + newVers + ", which will destroy all old data.");
db.execSQL("DROP TABLE IF EXISTS GM");
onCreate(db);
}
}
私の質問は、これが実際に初期データベースをどのように作成するかです。onCreate() メソッドで発生しますが、私が見る限り、これは呼び出されません。データベースを初めて作成するときに呼び出されることは理解していますが、どこで? さらに、SQLiteDatabase db はどのように渡されますか? メソッドにデータベースを渡していません。外部クラスの SQLiteDatabase db 変数は、作成されたデータベースにどのように設定されますか? 誰かがバカみたいに話してくれませんか?