我有一个活动,一旦活动开始,它将解析json数据并使用greendao更新数据库。它的更新代码如下:

exampleDao.insertOrReplace(exampleObj);

但当活动返回并恢复时,它会继续插入,导致主键不同但数据相同的重复数据输入,如何防止重复数据输入?
多谢

最佳答案

由于您没有提供关于数据模型的模式或类似信息,所以这个答案只是猜测!
可能您正在使用自动递增主键。
这意味着主键可能不包含在json数据中,从而导致主键属性为空。
这告诉greendao这是一个新条目,greendao将插入一个带有新主键的新条目。
尝试先读取对象,然后调用insertorreplace:

Example oldObj;
try {
    // Try to find the Example-Object if it is already existing.
    oldObj = exampleDao.queryBuilder().where(someCondition).unique();
} catch (Exception ex) {
    oldObj = null;
}
if (oldObj == null) {
    oldObj = new Example();
}
// update oldObj with the data from JSON
exampleDao.insertOrReplace(oldObj);

关于android - 防止greenDAO插入重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23795684/

10-12 04:34