- SQLiteOpenHelper
- Class Overview
- Summary
- Public Constructors
- public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
- public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
- Применение SQLiteOpenHelper и Database Inspector в Android-разработке
- Что такое SQLite?
- Класс SQLiteOpenHelper
- ▍Метод onCreate()
- ▍Метод onUpgrade()
- ▍Пример
- Database Inspector в Android Studio
- SQLite Open Helper Class
- Definition
- Remarks
- Constructors
- Properties
- Methods
- Explicit Interface Implementations
- Extension Methods
- SQLite Open Helper Constructors
- Definition
- Overloads
- SQLiteOpenHelper(IntPtr, JniHandleOwnership)
- Parameters
- Remarks
- Applies to
- SQLiteOpenHelper(Context, String, SQLiteDatabase+ICursorFactory, Int32)
- Parameters
- Remarks
- Applies to
- SQLiteOpenHelper(Context, String, Int32, SQLiteDatabase+OpenParams)
- Parameters
- Remarks
SQLiteOpenHelper
java.lang.Object | |
↳ | android.database.sqlite.SQLiteOpenHelper |
Class Overview
A helper class to manage database creation and version management.
You create a subclass implementing onCreate(SQLiteDatabase) , onUpgrade(SQLiteDatabase, int, int) and optionally onOpen(SQLiteDatabase) , and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.
This class makes it easy for ContentProvider implementations to defer opening and upgrading the database until first use, to avoid blocking application startup with long-running database upgrades.
For an example, see the NotePadProvider class in the NotePad sample application, in the samples/ directory of the SDK.
Note: this class assumes monotonically increasing version numbers for upgrades.
Summary
Public Constructors
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
Create a helper object to create, open, and/or manage a database. This method always returns very quickly. The database is not actually created or opened until one of getWritableDatabase() or getReadableDatabase() is called.
Parameters
context | to use to open or create the database |
---|---|
name | of the database file, or null for an in-memory database |
factory | to use for creating cursor objects, or null for the default |
version | number of the database (starting at 1); if the database is older, onUpgrade(SQLiteDatabase, int, int) will be used to upgrade the database; if the database is newer, onDowngrade(SQLiteDatabase, int, int) will be used to downgrade the database |
public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
Create a helper object to create, open, and/or manage a database. The database is not actually created or opened until one of getWritableDatabase() or getReadableDatabase() is called.
Accepts input param: a concrete instance of DatabaseErrorHandler to be used to handle corruption when sqlite reports database corruption.
Источник
Применение SQLiteOpenHelper и Database Inspector в Android-разработке
Автор статьи, перевод которой мы публикуем сегодня, хочет рассказать об использовании баз данных SQLite в Android-разработке. В частности — он коснётся тут двух вопросов. Во-первых — речь пойдёт о классе SQLiteOpenHelper , который применяется для работы с базами данных в коде приложений. Во-вторых — он уделит определённое внимание инструменту Database Inspector, инспектору баз данных, встроенному в Android Studio.
Что такое SQLite?
SQLite — это опенсорсная реляционная СУБД, похожая на MySQL. SQLite входит в состав стандартной библиотеки Android, где реализован движок базы данных, не нуждающийся в применении клиент-серверной архитектуры, не требующий особой настройки, поддерживающий транзакции. Для работы SQLite не нужен сервер баз данных. Всё, что нужно, хранится в обычных файлах. Полноценная БД SQLite, в которой имеется множество таблиц, триггеров, индексов и представлений, содержится в единственном, самом обыкновенном файле. Стандартная поддержка СУБД SQLite имеется во всех мобильных телефонах и в большинстве компьютеров. При этом работа с SQLite не требует решения задач по администрированию или настройке баз данных.
Android-разработчик, для выполнения CRUD-операций из своего приложения, может пользоваться пакетом android.database.sqlite.SQLiteDatabase , в котором реализованы все необходимые API.
Класс SQLiteOpenHelper
SQLiteOpenHelper — это класс, встроенный в пакет android.database.sqlite.SQLiteDatabase . Это — вспомогательный класс, который отвечает за создание баз данных SQLite и за управление их версиями. Для того чтобы воспользоваться возможностями этого класса, нужно создать его подкласс, в котором надо переопределить два метода — onCreate() и onUpgrade() . Этот класс позволяет открывать существующие базы данных, создавать новые базы данных и обновлять версии баз данных.
▍Метод onCreate()
Метод onCreate() вызывается при создании базы данных. Он, в процессе жизненного цикла приложения, вызывается лишь один раз. А именно, его вызов производится при первом обращении к методу getReadableDatabase() или getWritableDatabase() . Эти методы принадлежат классу SQLiteOpenHelper .
В следующем примере показано создание экземпляра класса DatabaseHelper , являющегося наследником SQLiteOpenHelper :
Вот код конструктора DatabaseHelper :
Класс SQLiteOpenHelper вызывает метод onCreate() после создания базы данных и создания экземпляра класса SQLiteDatabase . Этот метод, напомним, вызывается лишь один раз, при создании базы данных:
▍Метод onUpgrade()
Метод onUpgrade() вызывается в тех случаях, когда нужно обновить версию существующей базы данных:
▍Пример
Создадим простое Android-приложение и разберём практический пример работы с классом SQLiteOpenHelper . Это приложение, применяя данный класс, позволит нам добавлять записи о работниках некоей компании в таблицу Empdata базы данных Company.db .
Приложение имеет весьма простой интерфейс, описанный в файле activity_main.xml .
Вот содержимое файла MainActivity.java :
Вот содержимое Employee.java :
Вот файл DatabaseHelper.java :
В коде DatabaseHelper.java видно, что класс DatabaseHelper является наследником класса SQLiteOpenHelper .
После того, как база данных создана, можно приступать к работе с ней. В частности — создавать и обновлять поля её таблиц. При решении этих задач можно пользоваться объектом типа ContentValues , который позволяет хранить пары ключ-значение. Именно такие объекты используются для добавления новых записей в таблицы базы данных (с помощью метода insert() объекта SQLiteDatabase ) и для обновления существующих записей (с помощью метода update() ).
Database Inspector в Android Studio
Инструмент Database Inspector позволяет исследовать базы данных, используемые в приложениях, выполнять запросы к ним, модифицировать их, делая всё это во время работы приложений. Database Inspector имеется в Android Studio начиная с версии 4.1. Этот инструмент особенно полезен при отладке механизмов программ, ответственных за работу с базами данных. Database Inspector работает и с обычной реализацией SQLite, и с библиотеками, построенными на её основе, вроде Room. Database Inspector работает лишь с библиотекой SQLite, входящей в состав операционных систем Android, уровень API которых не ниже 26.
Для того чтобы открыть базу данных в Database Inspector нужно выполнить следующие действия:
- Запустите приложение в эмуляторе или на устройстве, подключённом к компьютеру. На эмуляторе или на устройстве должно присутствовать API не ниже 26 уровня.
- Выполните команду меню View > Tool Windows > Database Inspector .
- Выберите процесс выполняющегося приложения из выпадающего меню.
- В панели Databases появятся записи о базах данных, которые имеются в выбранном приложении. Теперь можно работать с этими базами данных.
Исследование базы данных с помощью Database Inspector
Обратите внимание на то, что есть одна проблема, связанная с аварийным завершением работы программ на эмуляторе Android 11 при подключении к Database Inspector. Если вы с этой проблемой столкнётесь — здесь вы можете найти сведения о том, как с ней справиться.
Применяете ли вы SQLite в Android-разработке?
Источник
SQLite Open Helper Class
Definition
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
A helper class to manage database creation and version management.
Remarks
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Constructors
Create a helper object to create, open, and/or manage a database.
Create a helper object to create, open, and/or manage a database.
Create a helper object to create, open, and/or manage a database.
A constructor used when creating managed representations of JNI objects; called by the runtime.
Properties
Returns the runtime class of this Object .
(Inherited from Object)
Return the name of the SQLite database being opened, as given to the constructor.
The handle to the underlying Android instance.
(Inherited from Object)
Create and/or open a database.
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code.
Create and/or open a database that will be used for reading and writing.
Methods
Creates and returns a copy of this object.
(Inherited from Object)
Close any open database object.
Indicates whether some other object is «equal to» this one.
(Inherited from Object)
Returns a hash code value for the object.
(Inherited from Object)
Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
(Inherited from Object)
Wakes up a single thread that is waiting on this object’s monitor.
(Inherited from Object)
Wakes up all threads that are waiting on this object’s monitor.
(Inherited from Object)
Called when the database connection is being configured, to enable features such as write-ahead logging or foreign key support.
Called when the database is created for the first time.
Called when the database needs to be downgraded.
Called when the database has been opened.
Called when the database needs to be upgraded.
Sets the Handle property.
(Inherited from Object)
Sets the maximum number of milliseconds that SQLite connection is allowed to be idle before it is closed and removed from the pool.
Configures
Sets configuration parameters that are used for opening SQLiteDatabase .
Enables or disables the use of write-ahead logging for the database.
Returns a string representation of the object.
(Inherited from Object)
Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.
(Inherited from Object)
Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.
(Inherited from Object)
Causes the current thread to wait until another thread invokes the java.lang.Object#notify() method or the java.lang.Object#notifyAll() method for this object.
(Inherited from Object)
Explicit Interface Implementations
IJavaPeerable.Disposed() | (Inherited from Object) |
IJavaPeerable.DisposeUnlessReferenced() | (Inherited from Object) |
IJavaPeerable.Finalized() | (Inherited from Object) |
IJavaPeerable.JniManagedPeerState | (Inherited from Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) | (Inherited from Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) | (Inherited from Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) | (Inherited from Object) |
Extension Methods
Performs an Android runtime-checked type conversion.
Источник
SQLite Open Helper Constructors
Definition
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Overloads
A constructor used when creating managed representations of JNI objects; called by the runtime.
Create a helper object to create, open, and/or manage a database.
Create a helper object to create, open, and/or manage a database.
Create a helper object to create, open, and/or manage a database.
SQLiteOpenHelper(IntPtr, JniHandleOwnership)
A constructor used when creating managed representations of JNI objects; called by the runtime.
Parameters
A IntPtrcontaining a Java Native Interface (JNI) object reference.
A JniHandleOwnershipindicating how to handle javaReference
Remarks
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Applies to
SQLiteOpenHelper(Context, String, SQLiteDatabase+ICursorFactory, Int32)
Create a helper object to create, open, and/or manage a database.
Parameters
to use for locating paths to the the database
of the database file, or null for an in-memory database
number of the database (starting at 1); if the database is older, #onUpgrade will be used to upgrade the database; if the database is newer, #onDowngrade will be used to downgrade the database
Remarks
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Applies to
SQLiteOpenHelper(Context, String, Int32, SQLiteDatabase+OpenParams)
Create a helper object to create, open, and/or manage a database.
Parameters
to use for locating paths to the the database
of the database file, or null for an in-memory database
number of the database (starting at 1); if the database is older, #onUpgrade will be used to upgrade the database; if the database is newer, #onDowngrade will be used to downgrade the database
configuration parameters that are used for opening SQLiteDatabase . Please note that SQLiteDatabase#CREATE_IF_NECESSARY flag will always be set when the helper opens the database
Remarks
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Источник