7

我有一个包含两个活动的应用程序。

其中一个列出了几个值,而另一个将新值添加到数据库中。

我有一个类,它从 SQLiteOpenHelper 扩展并管理数据库连接、查询等。

现在,我知道在 SQLiteOpenHelper 的构造函数中,您必须传递一个上下文,该上下文用于确定它是否必须创建新数据库或打开现有数据库。

但是,如果我在每个活动中都有一个 SQLiteOpenHelper 类的实例,那么上下文会有所不同。

有没有办法避免这种情况?

谢谢。

4

3 回答 3

6

传入应用程序上下文 (.getApplication()) 而不是 Activity。这样,两个实例都将使用相同的上下文访问数据库。

于 2012-11-09T12:37:46.587 回答
2

Context可能不同但不会创建不同的数据库。SQLiteOpenHelper构造函数有一个name参数,即数据库文件名。如果存在,则无论是否Context通过都不会创建。

于 2012-11-09T12:40:12.890 回答
1

实际上,创建的数据库与上下文的应用程序包相关联。因此,您是否传递了 Application 上下文或 Activity 上下文并不重要。

上下文.java

/**
 * Open a new private SQLiteDatabase associated with this Context's
 * application package.  Create the database file if it doesn't exist.
 ...
 ...
 */
public abstract SQLiteDatabase openOrCreateDatabase(String name,
        int mode, CursorFactory factory);
于 2016-02-15T12:38:41.837 回答