【发布时间】:2017-07-26 13:49:22
【问题描述】:
更新 Realm 数据库表中所有记录的最佳方法是什么?
这是我此刻所做的:
- 我正在将所有行选择到 RealmResults 列表中
- 在循环中一一更新
- 再次将更新 RealmResults 保存到 Realm 数据库。
我的代码:
@Override
public void updateAll(final Fragment fragment) {
final long startTime = System.nanoTime();
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
final RealmResults<Stock> realmResults = realm.where(Stock.class).findAll();
Log.d(Constants.LOG_TAG, "All rows [" + realmResults.size() + "] selected and fetched into RealmResults. Called 'execute' callback.");
for (Stock stock : realmResults) {
stock.setDate("1");
stock.setAdjClose(2);
stock.setVolume(3);
stock.setHigh(4);
stock.setLow(5);
stock.setOpen(6);
stock.setClose(7);
}
realm.insertOrUpdate(realmResults);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.d(Constants.LOG_TAG, "All rows updated. Called 'onSuccess' callback.");
((RealmFragment) fragment).stopBenchmark(startTime, System.nanoTime());
}
});
}
我还有一个问题:
与 SQLite 相比,您如何看待 UPDATE 操作的性能? 在我看来,SQLite 在更新数据方面应该总是比 Realm(使用 POJO)快得多。
【问题讨论】:
-
您不需要在
RealmResults上调用insertOrUpdate(),这是一个空操作。
标签: java android database realm