How should i update a already existing value using realm DB in android?
I have been trying to update it but it is adding as a new value only not overwritting it
Realm realm = Realm.getDefaultInstance();
OrderedRealmCollection<Practice> orderedRealmCollection =
realm.where(Practice.class)
.contains("key", "matchig value")
.findAll();
if(orderedRealmCollection.size()!=0){
Practice practice = orderedRealmCollection.first();
Realm.getDefaultInstance().executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
practice.setUpdate_practice_steps(""+steps);
realm.insertOrUpdate(practice);
}
});
}
You can user insertOrUpdate method to do this.Hope this helps
Realm.getDefaultInstance().executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
objectToEdit.setNewValue("string");
realm.insertOrUpdate();
}
});
Another way to update an existing object with all its fields in your Realm DB is using the method realm.copyToRealmOrUpdate()
:
Object obj = new Object();
obj.setField1(field1);
obj.setField2(field2);
realm.beginTransaction();
realm.copyToRealmOrUpdate(obj);
realm.commitTransaction();
If your object has a Primary Key, this method will update the object automatically without duplicate objects :)
More info: copyToRealmOrUpdate()