4
我想要更好地瞭解SQLiteOpenHelper類以及如何以及何時調用onCreate和onUpgrade。Android SQLite - 爲什麼我的數據庫每次都重新創建?
我的問題是,每次我退出並啓動我的應用程序(技術上它實際上是每次創建MyDB的新實例時),onCreate被調用,並且以前用法中的所有數據都被有效地擦除...跆拳道???
我最初通過創建單例MyDBFactory來創建單個MyDB實例,從而解決了這個問題。這允許數據在應用程序至少運行時保持不變。
我想要的是我的數據庫模式和數據是持久的!
我主要有:
public class MyDB extends SQLiteOpenHelper{
private static int VERSION = 1;
...
public ContactControlDB(Context context) {
super(context, null, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(DATABASE_CREATE);
db.execSQL(INSERT_DATA);
} catch (SQLException ex) {
ex.printStackTrace();
}
}
和:
public class MyDBFactory{
private static MyDB db;
public static MyDB getInstance(Context context) {
if(db == null) {
db = new MyDB (context);
}
return db;
}
}
我想知道是什麼原因的onCreate叫我每次有時間「新MYDB(背景)',並且每當我的應用程序退出時,我的數據庫就會移到這裏。
如果您有一些適當的鏈接或一些知識可以讓我有點頭緒,我將不勝感激!
哇,非常感謝您的快速響應!這樣一個簡單的解決方案:) –
@LouisSayers歡迎您。 –
顯然你現在可以擺脫工廠廢話了! –