在 Realm 中更新语句
Update statement in Realm
我有 VisitingCardPOJO
表格 table。我想更新单个条目说 no=3
VisitingCardPOJO.java
public class VisitingCardPOJO extends RealmObject {
@PrimaryKey private int no;
private String name;
private String address;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
我找到了解决方案并且有效
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
realm.beginTransaction();
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", card.getNo()).findFirst();
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
realm.commitTransaction();
}
真正正确的做法是这样
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
final int no = card.getNo();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", no).findFirst();
if(toEdit != null) {
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
}
}
});
}
我有 VisitingCardPOJO
表格 table。我想更新单个条目说 no=3
VisitingCardPOJO.java
public class VisitingCardPOJO extends RealmObject {
@PrimaryKey private int no;
private String name;
private String address;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
我找到了解决方案并且有效
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
realm.beginTransaction();
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", card.getNo()).findFirst();
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
realm.commitTransaction();
}
真正正确的做法是这样
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
final int no = card.getNo();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", no).findFirst();
if(toEdit != null) {
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
}
}
});
}