Я пытаюсь вставить данные в базу данных, но это дает мне следующую ошибку.
в таблице мест нет столбца с именем PLACE_NAME (код 1): при компиляции: INSERT INTO мест (PLACE_NAME, IS_SELECTED, placeID, LONGITUDE, LATITUDE) VALUES (?,?,?,?,?)
вот как я создаю свою таблицу базы данных
// Create a table to hold the places data
final String SQL_CREATE_PLACES_TABLE = "CREATE TABLE IF NOT EXISTS " + PlaceContract.PlaceEntry.TABLE_NAME + " (" +
PlaceContract.PlaceEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + PlaceContract.PlaceEntry.COLUMN_PLACE_NAME + " VARCHAR, " +
PlaceContract.PlaceEntry.COLUMN_PLACE_LATITUDE + " VARCHAR, " + PlaceContract.PlaceEntry.COLUMN_PLACE_LONGITUDE + " VARCHAR, "+
PlaceContract.PlaceEntry.COLUMN_PLACE_IS_SELECTED + " VARCHAR, " +
PlaceContract.PlaceEntry.COLUMN_PLACE_ID + " TEXT NOT NULL, " +
"UNIQUE (" + PlaceContract.PlaceEntry.COLUMN_PLACE_ID + ") ON CONFLICT REPLACE" +
"); ";
Пожалуйста, помогите мне, что я делаю не так ....
Всего 1 ответ
Наиболее распространенными причинами отсутствия столбца являются ошибки ввода и неправильное представление о методе onCreate .
Первый PlaceContract.PlaceEntry.COLUMN_PLACE_NAME
маловероятен, если вы последовательно используете один источник для имени столбца, например, если вы используете PlaceContract.PlaceEntry.COLUMN_PLACE_NAME
для ссылки на столбец place_name.
С последним, метод onCreate запускается автоматически только при создании базы данных, любые изменения, внесенные в схему, такие как добавление столбцов, не будут применены. Таким образом, если вы изменили строку SQL CREATE, чтобы добавить столбец PLACE_NAME, этот столбец не будет добавлен.
Когда вы разрабатываете приложение и когда данные могут быть потеряны, есть три быстрых способа исправить ситуацию.
Если данные в базе данных не могут быть потеряны, то альтернативой является использование ALTER для добавления столбца или создания другой таблицы, копирования данных из исходной таблицы, а затем удаления исходной таблицы и использования ALTER для переименования новой таблицы в быть оригинальным столом.