Наиболее распространенными причинами отсутствия столбца являются ошибки ввода и неправильное представление о методе onCreate .
Первый вариант маловероятен, если вы последовательно используете один источник дляимя столбца, например, если вы используете PlaceContract.PlaceEntry.COLUMN_PLACE_NAME
для ссылки на столбец place_name.
С последним метод onCreate запускается автоматически только при создании базы данных, любые изменения, вносимые в схему, такие как добавление столбцов,не будет применяться.Таким образом, если вы изменили строку SQL CREATE, чтобы добавить столбец PLACE_NAME, этот столбец не будет добавлен.
При разработке приложения и когда данные могут быть потеряны, тогда есть три быстрых способа исправить ситуацию.
- Удалите данные приложения и перезапустите (база данных будет удалена (если база данных не хранится вне приложения (не рекомендуется и не является типичным сценарием))).
- УдалитеApp и перезапустите (также удалите данные приложения).
- IF onUpgrade удалит указанную таблицу или таблицы и затем заново создаст таблицы (обычно вызывая onCreate ), затем можно увеличить версию базы данных (это 4-й параметр супер-вызова при создании класса Database Helper (т. Е. Класса, расширяющего SQLiteOpenHelper)).
Если данные в базе данных не могут быть потеряны, то альтернативой является использование ALTER для добавления столбца или для создания другой таблицы, скопируйтеданные из исходной таблицы, а затем отбросьте исходную таблицу и используйте ALTER, чтобы переименовать новую таблицу в исходную таблицу.