2013-06-23 2 views
2

У меня есть приложение для Android, которое я готов к выпуску, и я просматриваю часть своего кода. Я беспокоюсь о своей реализации для своего SQLiteOpenHelper. В частности, я хочу проверить, что ссылки oldVersion и newVersion в методе onUpgrade. Это основано на versionCode в моем AndroidManifest.xml? Или это что-то совершенно отдельное, специфичное для базы данных? Если это последний, как база данных определяет версию?Что такое номер версии SQLiteOpenHelper на основе?

+0

Последнее, вам просто нужно объявить простую переменную int в классе SQLiteOpenHelper, то есть единственную переменную, которую нужно изменить каждый раз, когда вы что-то обновляете. –

ответ

4

Это основано на версии Code в моем AndroidManifest.xml?

Как правило, если вы не обновляете свою схему каждый раз, когда публикуете обновление для своего приложения, и даже тогда «основанный на» будет в основном случайным.

Или это значение нечто совершенно отдельное, специфичное для базы данных?

Да. Вы увеличиваете версию каждый раз, когда у вас есть новая схема базы данных.

Если последнее, как база данных определяет версию?

На каждом onCreate() и onUpgrade(), Android втыкает тогда новую версию схемы базы данных в таблице метаданных в базе данных. Это то, что Android затем проверяет, когда вы используете своего помощника в будущем, сравнивая это сохраненное значение с тем, которое вы предоставляете в своем конструкторе SQLiteOpenHelper.

+0

Итак, откуда берется значение «then-new version»? Всегда ли это когда 'onCreate' вызывается? Или есть способ указать, что это должно быть? Причина, по которой я спрашиваю, заключается в том, что я выполняю 5 миграций из 'onCreate'. Как я могу сказать, что Android начнет с миграции №6 при следующем обновлении? –

+0

Ahh, я думаю, я понял, что мне не хватает. Конструктор принимает номер версии, который я полностью забыл, что я переопределяю. Отсюда и номер версии. :) –

+0

@MattHuggins: IOW, номер версии исходит от вас. Или ваш верный миньон, который вводит код, в зависимости от того, что может быть. :-) – CommonsWare

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