【发布时间】:2018-11-29 19:14:23
【问题描述】:
好的,所以我的应用数据库完全存储在 firebase 上, 我的应用每天都会更新它的数据库。
我在更新数据时每次都遵循什么程序:
- 删除当前的 sqlite 表
- 再次创建表
- 填写资料
这曾经完美地工作,想象一行被删除,所以当我删除整个表并重写整个事情时,被删除的行也从本地 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)");
附:我正在使用 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)");
}
【问题讨论】:
-
当你删除并创建一个新表时,你首先不会有多余的数据
-
但现在我正在更改表格列.. 我有一个新列,其数据应该被包含
-
不要删除表,更新表然后删除任何未更新的行。
-
我该怎么做
标签: android sqlite firebase-realtime-database