我试图更好地理解SQLiteOpenHelper类以及如何以及何时调用onCreate和onUpgrade.
我的问题是,每次我退出并启动我的应用程序(从技术上讲,实际上每次我创建一个新的MyDB实例),都会调用onCreate,并且有效擦除之前用法中的所有数据… WTF ???
我最初通过创建一个单独的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;
}
}
我想知道的是为什么每次我有’新MyDB(上下文)’时调用onCreate,以及每次我的应用程序退出时我的数据库都会被调用.
如果你有一些合适的链接,或者一些可以让我知道的知识,我会非常感激!
解决方法:
这条线:
super(context, null, null, VERSION);
第二个参数为null,指定应在内存中创建数据库,您应该为其命名.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!