我试图更好地理解sqliteopenhelper类,以及如何以及何时调用oncreate和onupgrade。
我的问题是,每次我退出并启动我的应用程序时(技术上说,实际上是每次我创建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;
}

}
我想知道的是,为什么每次有“new mydb(context)”时都会调用oncreate,以及每次我的应用退出时数据库的位置。
如果你有一些适当的链接,或一些知识,可以给我一些线索,我将非常感谢!

最佳答案

线:

super(context, null, null, VERSION);

第二个参数是null指定数据库应该在内存中创建,您应该给它一个名称。
Android reference

09-04 05:41
查看更多