在android中运行ORM Lite UpdateBuilder.update()后,无法从数据库中检索最新的更新值

时间:2014-11-21 02:17:26

标签: java android sqlite orm ormlite

使用ORM Lite更新android中的数据时遇到问题,因为我的更新数据不会立即在数据库中受到影响。 在更新过程之后,我从数据库中查询数据,但是我得到了与更新前相同的旧数据。

所以,我通过在更新过程后使用refresh(Object)刷新每个更新的对象来解决这个问题,问题还可以(我可以在下一个查询中从数据访问最新的更新数据)。

但我不确定这是不是最好的方式?如果有另一种方法 解决这个问题,请你告诉我? 感谢。

使用UpdateBuilder运行批量更新。

try {
    Set<String> ids = accountIdSet;
    UpdateBuilder<Account, Long> updateBuilder = account.updateBuilder();
    updateBuilder.where().in(Account.ID,ids);
    updateBuilder.updateColumnValue(Account.REGISTERED, true);
    return updateBuilder.update();
} catch (SQLException e) { }
return 0;

更新过程后,我通过以下行从数据库中查询数据。

try {
    Set<String> ids = accountIdSet;
    List<Account> result =  Account.queryBuilder().where().in(Account.ID, ids).query();
    if (result!=null) {
        for (Account acc : result) {
            Log.i(acc.getId() + ", registered = " + acc.getRegistered());
        }
        return result;
    }
} catch (SQLException e) { }
return null;

那时我得到了旧数据。例如 -

1, registered = false
2, registered = false
3, registered = false

结果应为

1, registered = true
2, registered = true
3, registered = true

0 个答案:

没有答案