Вы не можете удалить столбцы в SQLite. Обходной путь описан здесь в FAQ .
Чтобы добавить новый столбец, вы можете просто увеличить версию базы данных и изменить полученные строки создания на нужный макет базы данных (удалить столбец, который вы хотите удалить, и добавить другой). При следующем открытии базы данных вызывается onUpgrade, который удаляет существующие таблицы. После этого измененные таблицы создаются. Это не очень хороший метод, потому что вы теряете все данные в базе данных.
Чтобы добавить новый столбец без потери всех данных, вы должны изменить метод onUpgrade на что-то вроде этого (это предполагает, что ваша текущая версия базы данных равна 1, если не просто изменить число в регистре), а затем увеличить версию базы данных. :
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
database.execSQL("ALTER TABLE " +
TABLE_SUBJECT + " ADD COLUMN " + KEY_NEWCOLUMN + " text not null");
database.execSQL("ALTER TABLE " +
TABLE_CHAPTER + " ADD COLUMN " + KEY_NEWCOLUMN + " text not null");
}
}
Этот метод является масштабируемым, потому что при появлении новых изменений вы можете просто добавить случай 2, случай 3 ... Не добавлять разрыв в конце случая. Таким образом, если обновление приложения увеличивает версию до 3, а обновленное приложение все еще находится на 1 (возможно, оно пропустило обновление), все изменения применяются.
Здесь вы можете найти документацию для изменения таблицы. Сайт sqlite (sqlite.org), как правило, очень помогает найти такие вещи.