2013-10-04 4 views
1

У меня есть база данных SQLite в моем приложении, и теперь я внесла некоторые изменения в приложение, значения и т. Д. И вам нужно переименовать (или удалить и добавить новый) столбец.Android SQLite добавляет новые столбцы в таблицу

Я первый раз переименовал имя столбца, но теперь я получаю

sqlite.sqliteexception no such column error... 

Должен ли я использовать какой-то другой метод для изменения таблицы (имена столбцов) вместо этого любительском прямой подход, который, очевидно, возвращается эта ошибка?

UPDATE

Хитрость заключается только в изменении версии базы данных:

public DatabaseManidzer(Context context){ 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 

      Log.w(DatabaseManidzer.class.getName(),"Upgrading database from version " + oldVersion + " to " 
        + newVersion + ", which will destroy all old data"); 

      db.execSQL("DROP TABLE IF EXISTS " + TABLE_VNOSI); 
      onCreate(db); 

     } 

ответ

3

Да, если вы используете DatabaseHelper, то есть способ обновить схему базы данных.

вы можете найти множество учебных пособий по этому поводу.

См. Здесь. Android update SQLite DB schema?

метод вы ищете onUpgrade

не переименовывать переменные, которые ссылаются на фактические столбцы таблицы, если не изменить настоящие имена столбцов первой. Вам нужно будет использовать sql-запросы, чтобы делать то, что вы хотите.

0

Вы можете просто добавить запрос ALTER TABLE в метод onUpgrade, а затем не забудьте увеличить версию БД в своем вспомогательном классе, таким образом вы сохраните существующие данные в таблице. Или, если вы все еще в разработке, просто отбросьте таблицу и заново создайте ее с новыми изменениями. Если вы дадите мне пример того, что вы пытаетесь добиться успеха, я могу вам помочь.

Спасибо.

+0

Спасибо, я уже решил эту проблему путем сбрасывания и воссоздавать мой стол - приложение все еще находится в разработке, поэтому нет никаких проблем при этом. – belosand

0

если версия DB: 6 Ex: Существует таблица с 5 столбцов

При обновлении до: 7

  1. Нам нужно добавить столбцы при создании таблицы
  2. onUpgrade метод:

    , если (oldVersion < 7)
    { db.execSQL (DATABASE_ALTE R_ADD_PAPER_PAID); db.execSQL (DATABASE_ALTER_LAST_UPLOADED); db.execSQL (DATABASE_ALTER_PAPER_LABEL); }

После выше двух операций он будет отлично работает для свежей установки пользователя и обновления приложения пользователя

С уважением Винода

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