Firebase数据库存储到sqlite数据库中,其中一些属性保持不变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase数据库存储到sqlite数据库中,其中一些属性保持不变相关的知识,希望对你有一定的参考价值。

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

我在更新数据期间每次都遵循什么程序:

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

这曾经完美地工作,想象一行被删除,因为我删除整个表并重写整个事情,删除的行也从技术上删除本地sqlite,但现在表中有一个小的变化,有一个列,说“查看”哪个存储是否查看特定行数据,“true”或“false”(String)

现在,如果我在更新时删除数据,它将丢失此列属性。然后我想在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)");

附:我正在使用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:向新表添加新的列日期

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)
}

第3步:从本地表中删除日期不等于今天的日期。

以上是关于Firebase数据库存储到sqlite数据库中,其中一些属性保持不变的主要内容,如果未能解决你的问题,请参考以下文章

如何以BLOB格式将图像上传到Firebase存储?

Firebase 或 SQLite [关闭]

recyclerview的onBindViewHolder内的Android Firebase监听器

将图像链接从 Firebase 存储存储到 Firebase 数据库时出错

Firebase 存储不会下载并添加到 firebase 数据库

使用 SQLite API 将 API 输出 (JSON) 插入 SQLite