gpt4 book ai didi

android - SQLiteOpenHelper 提供的所有数据库是否保证在应用程序中使用相同的名称构造是相同的?

转载 作者:行者123 更新时间:2023-11-29 21:13:00 31 4
gpt4 key购买 nike

如果一个应用程序中的多个 Activity 调用我的 SQLiteOpenHelper 的构造函数并将它们自己作为上下文参数,我可以确定它们都将访问同一个数据库吗?

例如,假设我有:

package foo.bar;

public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteDatabase db = new MySQLiteOpenHelper(this).getReadableDatabase();
:
}
}

package foo.bar.baz;

public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SQLiteDatabase db = new MySQLiteOpenHelper(this).getReadableDatabase();
:
}
}

这是我的 SQLiteOpenHelper 的骨架子类:

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "comments.db";
private static final int DATABASE_VERSION = 1;

public MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
:
}

我在 the documentation 中找不到任何内容这保证了两个 Activity 获得相同的数据库。另一方面,我还没有看到任何人提到人们从单个应用程序的上下文中获取不同的数据库。数据库路径是否保证相同?

最佳答案

SQLiteOpenHelper 有 2 个构造函数,它们的第二个参数是数据库文件名。

如果您在不同的 Activity 中使用 SQLiteOpenHelper 时使用相同的数据库文件名,您将可以访问相同的数据库。

这通常在您创建的继承类的构造函数中处理 - DATABASE_NAME 是一个常量:

public MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

关于android - SQLiteOpenHelper 提供的所有数据库是否保证在应用程序中使用相同的名称构造是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22212123/

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