Хорошо, поэтому моя база данных приложения полностью хранится в firebase, и мое приложение обновляет свою базу данных каждый день.
Какую процедуру я использовал каждый раз при обновлении данных:
- Удалите текущую таблицу sqlite
- Создайте таблицу снова
- Заполните данные
Раньше это работало идеально, представьте, что строка удалена, так как я отбрасываювсю таблицу и переписать все это, удаленная строка также технически удаляется из локального sqlite, но теперь в таблице есть небольшое изменение, есть столбец, скажем «просмотренный», в котором хранятся данные о просмотре конкретной строки илине, "истина" или "ложь" (String)
Теперь, если я уроню данные во время обновления, он потеряет свойства этого столбца.Затем я подумал об использовании UPDATE в sqlite и обновлении данных столбцов каждой строки, но могут быть случаи, когда определенного столбца больше нет в базе данных firebase, но если я это сделаю, он останется в моей локальной базе данных.(Я имею в виду, что данные не редактируются, а удаляются).Так как я могу преодолеть это?
Старая таблица:
db.execSQL("CREATE TABLE IF NOT EXISTS appdata_videos (id TEXT, link TEXT, title TEXT, subcode TEXT)");
Новая таблица:
db.execSQL("CREATE TABLE IF NOT EXISTS appdata_videos (id TEXT, link TEXT, title TEXT, subcode TEXT, viewed TEXT)");
PSЯ использую одноразовый прослушиватель firebase, так как мне нужно обновлять данные только один раз в день.
Я использовал эту функцию каждый раз, когда хотел очистить базу данных:
public void clearDB()
{
db.execSQL("DROP TABLE IF EXISTS subCodes");
db.execSQL("CREATE TABLE IF NOT EXISTS subCodes (id TEXT, dbName TEXT, subName TEXT, tagline TEXT, pref INTEGER, hasInterviewQuestions TEXT, hasVideos TEXT, hasCodes TEXT)");
db.execSQL("DROP TABLE IF EXISTS appdata_codes");
db.execSQL("CREATE TABLE IF NOT EXISTS appdata_codes (id TEXT, question TEXT, code TEXT, tag TEXT, subcode TEXT, imglink TEXT, xlink TEXT)");
db.execSQL("DROP TABLE IF EXISTS appdata_videos");
db.execSQL("CREATE TABLE IF NOT EXISTS appdata_videos (id TEXT, link TEXT, title TEXT, subcode TEXT)");
db.execSQL("DROP TABLE IF EXISTS appdata_interviewquestions");
db.execSQL("CREATE TABLE IF NOT EXISTS appdata_interviewquestions (id TEXT, subcode TEXT, html TEXT)");
}