gpt4 book ai didi

Android SQLite - 为什么我的数据库每次都重新创建?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:00 24 4
gpt4 key购买 nike

我试图更好地了解 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;
}

我想知道为什么每次我有“new MyDB(context)”时都会调用 onCreate,以及每次我的应用程序退出时我的数据库会去哪里。

如果您有一些合适的链接,或者一些可以给我一些线索的知识,我将不胜感激!

最佳答案

线路:

super(context, null, null, VERSION);

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

Android reference

关于Android SQLite - 为什么我的数据库每次都重新创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8979472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com