Firebase数据库存储到sqlite数据库中,某些属性未更改

时间:2018-11-25 21:06:34

标签: android sqlite firebase-realtime-database

好的,所以我的应用程序数据库完全存储在firebase上, 然后我的应用每天都会更新其数据库。

在更新数据期间,我每次都要遵循什么步骤:

  1. 删除当前的sqlite表
  2. 再次创建表
  3. 填写数据

这曾经很好地工作,想象一下删除了一行,所以当我放下整个表并重写整个内容时,删除的行也从技术上从本地sqlite删除了,但是现在表中有一点变化,有一个列,例如“ viewed”,它存储是否查看特定的行数据,为“ true”或“ false”(字符串)

现在,如果我在更新时删除数据,它将失去此列属性。 然后,我想到了在sqlite中使用UPDATE并更新每一行的列数据,但是有时可能某些实例中的某个特定列不再存在于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)");

P.S。我正在使用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)");
    }

1 个答案:

答案 0 :(得分:3)

希望该解决方案可以为您提供帮助,

第一步:在新表格中添加一个新的列日期

db.execSQL("CREATE TABLE IF NOT EXISTS appdata_videos (id TEXT, link TEXT, title TEXT, subcode TEXT, viewed TEXT, date TEXT)");

step2:从Firebase获取ID,并检查ID是否在本地数据库中存在(遍历所有ID) 例如:

if(isTheIdAvailableInLocalTable(idFromFirebase)){
//update the date column to todays date (dd-MM-yyyy)
}else{
//new entry so insert into local table with todays date (dd-MM-yyyy)
}

Step3:从本地表中删除日期不等于tadays日期的