使用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