我正在制作一个数据库应用程序,我的程序可以运行,并且我已经理解了我一直在关注的大部分教程。但是,我仍然不清楚一个方面。
MyDBHelper 有一个内部类扩展 SQLiteOpenHelper。外部变量包括名为 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 数据库的?我没有将任何数据库传递给该方法。我的 SQLiteDatabase db 变量如何从外部类设置为创建的数据库?有人能像白痴一样告诉我吗?