Ответ 1
Если вы используете SQLiteOpenHelper
, легко обновить таблицу. Вам необходимо реализовать методы onCreate
и onUpgrade
и предоставить текущую версию вашей базы данных в конструкторе класса. При обновлении таблицы просто увеличивайте номер версии базы данных, укажите новый запрос создания таблицы в методе onCreate
и поместите метод ALTER TABLE
в onUpgrade
для обновления предыдущей версии таблицы. Когда Android обнаружит несоответствие версии базы данных, он автоматически вызовет метод onUpgrade
. См. Пример:
public class OpenHelper extends SQLiteOpenHelper {
private final static int DB_VERSION = 2;
public TracksDB(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
final String CREATE_TBL =
"create table " + ANIMALS_TABLE +
" (_id integer primary key autoincrement, " +
"animal_name text not null, " +
"biography text not null);";
db.execSQL(CREATE_TBL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
final String ALTER_TBL =
"ALTER TABLE " + ANIMALS_TABLE +
" ADD COLUMN biography text not null;";
db.execSQL(ALTER_TBL);
}
}
}
Этот способ обновления - это правильный способ изменения таблиц без потери пользовательских данных, особенно если приложение уже было выпущено для публики.