SQLite onUpgrade ()

у меня есть проблема в базе данных SQLite в андроиде.

В моем onCreate (SQLiteDatabase db) метод класса SQLiteOpenHelper я составляю таблицы. Теперь мне загрузили это применение в playstore. Теперь я полагал, что мне нужен еще один coloumn в тех столах.

Если я поместил обновление применения в playstore (с новыми вопросами в onCreate() метод), в следующий раз OnUpgrade (), метод назовут, и следовательно привычка стола создается снова.

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

3
nl ja de
можно просто изменить таблицу в oncreate
добавлено автор Dilip, источник

4 ответы

1. О onCreate() и onUpdate()

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

Вам нужен конструктор как:

2. Увеличивание db версии

MyOpenHelper(Context context) {
super(context, "dbname", null, 2);
}

ВАЖНЫЙ: Увеличивание одной только версии приложения недостаточно для onUpgrade, который назовут.

3. Не забывайте своих новых пользователей!

Не забывайте добавлять

database.execSQL(DATABASE_CREATE_color);

к вашему onCreate() метод также или недавно установленные приложения испытают недостаток в столе.

4. То, как иметь дело с многократной базой данных, изменяется со временем

Когда у вас есть последовательные обновления приложений, у нескольких из которых есть модернизации базы данных, вы хотите убедиться проверить oldVersion:

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   switch(oldVersion) {
   case 1:
       db.execSQL(DATABASE_CREATE_color);
      //we want both updates, so no break statement here...
   case 2:
       db.execSQL(DATABASE_CREATE_someothertable); 
   }
}

Этот путь, когда пользователь модернизирует от версии 1 до версии 3, они получают оба обновления. Когда пользователь модернизирует от версии 2 - 3, они просто получают пересмотр 3 обновления... В конце концов, вы не можете рассчитывать на 100% своей базы пользователей, чтобы модернизировать каждый раз, когда вы выпускаете обновление. Иногда они пропускают обновление или 12:)

Надо надеяться, это имеет смысл.

5. Держание под контролем чисел пересмотра, развиваясь

И наконец... запрос

adb uninstall 

полностью деинсталлирует приложение. Когда вы установите снова, вы, как гарантируют, поразите onCreate метод, который мешает вам иметь, чтобы продолжать увеличивать версию базы данных в стратосферу...

13
добавлено
Это означает, что необходимо заботиться о количество пересмотра базы данных. Чтобы проверить, хорошо работает ли все, можно звонить, adb деинсталлируют , который полностью деинсталлирует приложение. Это, чтобы видеть, будет ли в первый раз ваше приложение установлено, все хорошо работает.
добавлено автор Miloš, источник
В вашем случае, как некоторые пользователи ответили, можно изменить таблицу onUpgrade или составить правильную таблицу onCreate.
добавлено автор Miloš, источник
эй, могли вы, пожалуйста, описывать 5-й пункт подробно.. Средства, где я должен использовать эту команду
добавлено автор gaurav414u, источник

As per my understanding you have to add just one column.
You may try with

Alter table

Ref- http://www.sqlite.org/lang_altertable.html

2
добавлено

onCreate(SQLiteDatabase db) is called only when the database is created for the first time. If you want to handle an upgrade to an existing table, you should use the onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion). Specifically handle the migration paths from oldVersion to newVersion

0
добавлено

Это может не быть лучшим решением, но я построил свой код, чтобы сравнить схемы стола, выбрав колонки, которые я ищу.

Если они не там, вы получаете исключение, и затем я понижаюсь/воссоздают столы. В следующий раз выполнение приложения колонки там, таким образом, избранное хорошо работает. Не уверенный его идеал, но это работает,

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)