Как это работает контекст SQLiteOpenHelper
У меня есть приложение с двумя видами деятельности.
один из них перечисляет несколько значений, а другой добавляет новые значения в БД.
У меня есть класс, который простирается от SQLiteOpenHelper и управляет соединениями БД, запросами и т. д.
теперь я понимаю, что в конструкторе SQLiteOpenHelper вы должны передать контекст, который используется для определения, должен ли он создать новую БД или открыть существующую.
но если у меня есть один экземпляр SQLiteOpenHelper класс в каждом действии, то контекст будет отличаться.
есть ли способ избежать этого?
спасибо.
3 ответов
Pass в контексте приложения, (.getApplication ()) вместо действия. Таким образом, оба экземпляра получат доступ к БД, используя один и тот же контекст.
на Context
может отличаться, но не создавать разные БД. The конструктор SQLiteOpenHelper есть name
параметр, это имя файла БД. Если это существует, не будет создавать независимо от Context
прошло.
фактически, созданная база данных связанный с пакетом приложений контекста. Поэтому не имеет значения, передали ли вы контекст приложения или контекст действия.
/**
* 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);