我想弄清楚如何高效且有效地执行数据库操作。我有它,所以当用户登录时,我使用 Facebook API 并获取有关用户 friend 的详细信息并将它们放入我的数据库中。这是在名为 createFriend
的方法中完成的。但是,如果我第二次登录,就会出现错误,因为每个 friend 都有一个唯一的用户 ID。因此,如果我第二次登录,我的代码会再次调用 createFriend
方法并尝试插入我第一次登录时已经插入的同一个 friend ,我会遇到唯一列违规.
因此,我不知道什么时候应该调用createFriend
方法。我想到了 2 种解决方案来解决我的问题:
我查看了此链接,看看是否可以检查每一行,如果该行存在,然后我才进行插入。我发现:SQLiteDatabase: Insert only if the value does not exist (not via raw SQL command) .每次我想插入一个 friend 时检查该行是否存在,这似乎不是很有效,如果不存在,我不插入,否则我插入。我必须为用户拥有的每个 friend 执行此选择语句。
我想到的另一种方法是:我可以调用 Facebook API 并检查从 Facebook API 返回的好友数量是否等于本地数据库中的行数。如果是这样,我将跳过一起调用
createFriend
。如果没有,我可以删除整个数据库并重新插入所有 friend 。但是,这似乎效果不佳,因为 Facebook API 有可能继续返回与我的数据库中相同数量的 friend ,但返回的 friend 可能与数据库中的不同。因此,数据库不会更新,因为 friend 的数量仍然相同,但我希望它更新,因为我想将那些潜在的新 friend 插入数据库。
任何人都可以指出我可以在哪里解决这个问题的正确方向吗?谢谢!
最佳答案
您可以更新重复键。
看看这个作为引用, SQLite UPSERT - ON DUPLICATE KEY UPDATE
关于android - 如何知道何时插入我的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853002/