Сложность при обновлении таблицы SQlite

У меня есть приложение, работающее с рабочей таблицей, называемой ANIMAL. Сначала создав эту таблицу, она состояла просто из столбцов _id и animal_name.

Теперь я пытаюсь расширить его, включая столбец animal_biography, однако у меня небольшие трудности. Сначала я подумал, что это всего лишь случай обновления моей инструкции CREATE_TABLE, чтобы включить биографию животных:

private static final String DATABASE_CREATE = "create table " + ANIMALS_TABLE + " (_id integer primary key autoincrement, " + "animal_name text not null, " + "biography text not null);"; 

Однако, глядя на логарифм, он говорит мне, что биография колонки не существует при попытке вставить в нее.

Теперь я попытался обновить базу данных с помощью onUpgrade() и включить код

 db.execSQL("ALTER TABLE" + DATABASE_NAME); db.execSQL(DATABASE_CREATE); 

Но это также не решает проблему. Есть ли у кого-нибудь указания относительно того, как решить эту проблему?

    Если вы используете SQLiteOpenHelper , легко обновить таблицу. Вам необходимо реализовать методы onCreate и onUpgrade и предоставить текущую версию вашей базы данных в конструкторе класса. При обновлении таблицы просто увеличивайте номер версии базы данных, укажите новый запрос создания таблицы в методе onCreate и поместите ALTER TABLE в метод onUpgrade для обновления предыдущей версии таблицы. Когда Android обнаружит несоответствие версии базы данных, он автоматически onUpgrade метод 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); } } } 

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