Ошибка при вставке данных в базу данных с использованием значений содержимого

Я пытаюсь вставить данные в базу данных, но это дает мне следующую ошибку.

в таблице мест нет столбца с именем 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, этот столбец не будет добавлен.

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

  1. Удалите данные приложения и повторно запустите (база данных будет удалена (если база данных не хранится вне приложения (не рекомендуется и не является типичным сценарием))).
  2. Удалите приложение и перезапустите (также удалите данные приложения).
  3. Если onUpgrade удалит указанную таблицу или таблицы и затем заново создаст таблицы (как правило, вызывая метод onCreate ), то версия базы данных может быть увеличена (это 4-й параметр супер-вызова при создании класса Database Helper (т.е. класса что расширяет SQLiteOpenHelper)).

Если данные в базе данных не могут быть потеряны, то альтернативой является использование ALTER для добавления столбца или создания другой таблицы, копирования данных из исходной таблицы, а затем удаления исходной таблицы и использования ALTER для переименования новой таблицы в быть оригинальным столом.


Есть идеи?

10000