// Do you need this?
private static int DATABASE_VERSION = 2;
Да, вам это нужно.(Еще лучше, сделайте это также final
.)
Это сообщает помощнику базы данных, какая последняя версия схемы базы данных.Это должно быть исправлено в коде вашего приложения и увеличиваться всякий раз, когда вы изменяете схему.
Когда ваше приложение запускается, помощник во время выполнения проверяет, что представление вашего кода о последней версии совпадает с версией версиикоторый был активен, когда база данных была в последний раз создана или обновлена(Это то, для чего db.getVersion()
.) Если числа не совпадают, то помощник знает, что сохраненная база данных устарела по отношению к коду вашего приложения, и поэтому он запускает процедуру обновления.
Похоже, вы не создаете базу данных с нуля, а импортируете существующую базу данных из своих активов.Когда вы делаете этот первоначальный импорт, это время, когда нужно убедиться, что сохраненная версия соответствует версии вашего кода;либо примените его непосредственно к файлу базы данных в ваших ресурсах, либо, если вы уверены, что файл базы данных в ваших ресурсах соответствует коду, вы вызываете setVersion(DATABASE_VERSION)
.
В любом случае вам не следуетпытаться изменить номера версий в подпрограмме onUpgrade()
.Это вызывается только в том случае, если версии не совпадают, и все, что вы должны здесь сделать, - это внести все необходимые изменения, чтобы обновить базу данных.Помощник будет управлять сохранением номера новой версии после завершения обновления.