Я не очень много знаю о SQLite так, я хочу знать, что такое использование OnCreate() и onUpgrade() метод SQLiteOpenHelper.SQLite Операция
И когда OnCreate() и onUpgrade() метод называется.?
Я не очень много знаю о SQLite так, я хочу знать, что такое использование OnCreate() и onUpgrade() метод SQLiteOpenHelper.SQLite Операция
И когда OnCreate() и onUpgrade() метод называется.?
SQLiteOpenHelper
onCreate()
и onUpgrade()
обратные вызовы вызываются, когда база данных фактически открыта, например, с помощью вызова getWritableDatabase()
. База данных не открывается, когда создается объект-помощник базы данных.
SQLiteOpenHelper
версии файлов базы данных. Номер версии - это аргумент int
, переданный в constructor. В файле базы данных номер версии хранится в PRAGMA user_version
.
onCreate()
выполняется только в том случае, если файл базы данных не существует и был только что создан. Если onCreate()
успешно возвращается (не генерирует исключения), предполагается, что база данных будет создана с запрошенным номером версии. В качестве следствия вы не должны поймать SQLException
s в onCreate()
самостоятельно.
onUpgrade()
вызывается только в том случае, если файл базы данных существует, но номер сохраненной версии ниже запрошенного в конструкторе. onUpgrade()
должен обновить схему таблицы до требуемой версии.
При изменении схемы таблицы в коде (onCreate()
) вы должны убедиться, что база данных обновлена. Два основных подхода:
Удалите старый файл базы данных, так что onCreate()
запускается снова. Это часто бывает предпочтительным во время разработки, когда вы контролируете установленные версии и потеря данных не является проблемой. Некоторые способы удаления файла базы данных:
Удалить приложение. Используйте диспетчер приложений или adb uninstall your.package.name
из оболочки.
Очистить данные приложения. Используйте диспетчер приложений.
Increment версия базы данных, так что onUpgrade()
вызывается. Это немного сложнее, так как требуется больше кода.
Для развития время обновления схемы, где потеря данных не является проблемой, вы можете просто использовать execSQL("DROP TABLE IF EXISTS <tablename>")
, чтобы удалить из существующих таблиц и вызвать onCreate()
воссоздать базу данных.
Для выпущенных версий вы должны осуществить миграцию данных в onUpgrade()
, чтобы ваши пользователи не потеряли свои данные.
Вы серьезно копируете + вставляете этот ответ из вики сообщества? – earthw0rmjim
Я создал базу данных, и после этого я добавляю это поле, а также изменяю версию базы данных, но не могу повлиять на базу данных, так как я могу это сделать.? –
, когда вы меняете версию базы данных и версию приложения, а затем в следующий раз onUpgrade вызывается –
onUpgrade()
называется (не называть его самостоятельно), если версия вашей БД изменяется, что означает базовая структура таблицы изменилась и т.д.
oncreate()
: вызывается только один раз, когда база данных создана для первый раз. Он используется для создания таблицы в базе данных.
Если вы хотите задать новый вопрос, вы должны задать новый вопрос вместо редактирования старого закрытого вопроса. Кроме того, ваш новый вопрос, касающийся «пожалуйста, порекомендуйте мне библиотеку базы данных для использования в приложениях для Android», будет закрыт как не по теме, поэтому на самом деле не задавайте вопрос. – EpicPandaForce