Сбой приложения Android при внесении изменений в базу данных

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

Примечание. Я не хочу удалять свою предыдущую версию, потому что хочу сохранить ранее сохраненные данные

Любые предложения друзей?

При изменении структуры базы данных увеличьте номер версии своей базы данных на 1. (Т.е. добавление нового столбца, удаление существующего столбца, изменение типа данных столбца, изменение имени столбца и т. Д.).

И поставьте ниже двух строк внутри метода onUpgrade () вашего вспомогательного класса db.

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

Каждый раз он проверяет текущий номер версии базы данных. Если он обнаруживает какое-либо несоответствие между текущей версией базы данных и более ранней версией, то она просто выполняет метод onUpgrade () для обновления базы данных. Итак, мы отбрасываем все наши таблицы и создаем новую таблицу (ы) снова. Итак, теперь вы можете добавлять / удалять 'n' количество столбцов при работе с db. Все, что вам нужно сделать, это просто увеличить номер версии на 1 и выполнить при изменении структуры db.

Когда вы создаете базу данных, вы, вероятно, будете использовать ее, если эти конструкторы:

 public TimePointsSQLiteHelper(Context context, String name, CursorFactory factory, int version) { super(context, dbName, factory, dbVersion); } private TimePointsSQLiteHelper(Context context) { super(context, dbName, null, dbVersion); } 

Как вы можете видеть, существует переменная dbVersion , это та, где вы указываете версию базы данных, чтобы избежать проблемы, с которой вы сталкиваетесь. В качестве предложения используйте конечную статическую переменную int для старой версии / номера вашей базы данных, чтобы вы могли легко ее изменить. Например:

 public final static int dbVersion = 1; 

Затем вы должны переопределить onUpgrade(...) и / или onDowngrade(...) , чтобы применить изменения к текущему приложению и данным.

Самый простой и быстрый способ сделать это – один из упоминаемых @SANTHOSH, просто отбросьте все таблицы и создайте их снова:

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

Будьте осторожны, что с помощью этого решения вы потеряете текущие данные, сохраненные в вашей базе данных. Вы должны добавить больше логики для onUpgrade и onDowngrade чтобы перенести данные из одной версии базы данных в другую, если вы хотите ее сохранить.

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

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