Estoy haciendo una aplicación de base de datos, y mi programa funciona y he entendido la mayor parte del tutorial que he seguido. Sin embargo, un aspecto no me queda claro.SQLiteOpenHelper: ¿cómo se crea la base de datos?
Hay una clase interna de MyDBHelper que extiende SQLiteOpenHelper. Las variables externas incluyen SQLiteDatabase denominada d. El código para MyDBHelper es:
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);
}
}
Mi pregunta es cómo crea esto realmente la base de datos inicial. Ocurre en el método onCreate(), pero hasta donde puedo ver, esto es nunca llamado. Entiendo que se llama cuando la base de datos se crea por primera vez, pero ¿dónde? Y, además, ¿cómo se pasa un SQLiteDatabase db? No he pasado ninguna base de datos al método. ¿Y cómo está mi variable SQLiteDatabase db de external clase establecida en la base de datos creada? ¿Podría alguien hablarme de esto como un idiota?