2016-08-13 4 views
0

Я не очень много знаю о SQLite так, я хочу знать, что такое использование OnCreate() и onUpgrade() метод SQLiteOpenHelper.SQLite Операция

И когда OnCreate() и onUpgrade() метод называется.?

+0

Если вы хотите задать новый вопрос, вы должны задать новый вопрос вместо редактирования старого закрытого вопроса. Кроме того, ваш новый вопрос, касающийся «пожалуйста, порекомендуйте мне библиотеку базы данных для использования в приложениях для Android», будет закрыт как не по теме, поэтому на самом деле не задавайте вопрос. – EpicPandaForce

ответ

0

Documentation

SQLiteOpenHelperonCreate() и onUpgrade() обратные вызовы вызываются, когда база данных фактически открыта, например, с помощью вызова getWritableDatabase(). База данных не открывается, когда создается объект-помощник базы данных.

SQLiteOpenHelper версии файлов базы данных. Номер версии - это аргумент int, переданный в constructor. В файле базы данных номер версии хранится в PRAGMA user_version.

onCreate() выполняется только в том случае, если файл базы данных не существует и был только что создан. Если onCreate() успешно возвращается (не генерирует исключения), предполагается, что база данных будет создана с запрошенным номером версии. В качестве следствия вы не должны поймать SQLException s в onCreate() самостоятельно.

onUpgrade() вызывается только в том случае, если файл базы данных существует, но номер сохраненной версии ниже запрошенного в конструкторе. onUpgrade() должен обновить схему таблицы до требуемой версии.

При изменении схемы таблицы в коде (onCreate()) вы должны убедиться, что база данных обновлена. Два основных подхода:

  1. Удалите старый файл базы данных, так что onCreate() запускается снова. Это часто бывает предпочтительным во время разработки, когда вы контролируете установленные версии и потеря данных не является проблемой. Некоторые способы удаления файла базы данных:

    • Удалить приложение. Используйте диспетчер приложений или adb uninstall your.package.name из оболочки.

    • Очистить данные приложения. Используйте диспетчер приложений.

  2. Increment версия базы данных, так что onUpgrade() вызывается. Это немного сложнее, так как требуется больше кода.

    • Для развития время обновления схемы, где потеря данных не является проблемой, вы можете просто использовать execSQL("DROP TABLE IF EXISTS <tablename>"), чтобы удалить из существующих таблиц и вызвать onCreate() воссоздать базу данных.

    • Для выпущенных версий вы должны осуществить миграцию данных в onUpgrade(), чтобы ваши пользователи не потеряли свои данные.

+1

Вы серьезно копируете + вставляете этот ответ из вики сообщества? – earthw0rmjim

+0

Я создал базу данных, и после этого я добавляю это поле, а также изменяю версию базы данных, но не могу повлиять на базу данных, так как я могу это сделать.? –

+0

, когда вы меняете версию базы данных и версию приложения, а затем в следующий раз onUpgrade вызывается –

0

onUpgrade() называется (не называть его самостоятельно), если версия вашей БД изменяется, что означает базовая структура таблицы изменилась и т.д.

oncreate(): вызывается только один раз, когда база данных создана для первый раз. Он используется для создания таблицы в базе данных.

 Смежные вопросы

  • Нет связанных вопросов^_^