我正在研究Realm DB。
但我致力于保存多行/值。
我想只保存一行。
我尝试了很多approches,但没有得到任何结果,事情是我也没有得到任何错误:(
如何应对这种情况?
答案 0 :(得分:5)
定义架构:
public class Dog extends RealmObject {
@PrimaryKey
private long id;
@Index
private String name;
public long getId() { return this.id; }
public void setId(long id) { this.id = id; }
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
}
写入境界:
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog dog = new Dog();
dog.setId(1L);
dog.setName("Fetch");
realm.insertOrUpdate(dog);
}
});
} finally {
if(realm != null) {
realm.close();
}
}
从数据库中检索(同步):
Dog dog = realm.where(Dog.class).equalTo("id", 1L).findFirst();
if(dog != null) {
// dog
}
从数据库中检索(UI线程上的异步,0.84.0 +):
private RealmResults<Dog> dogs;
private final RealmChangeListener<Dog> listener = new RealmChangeListener<Dog>() {
@Override
public void onChange(RealmResults<Dog> dogs) {
if(dogs.isValid()) {
if(dogs.isEmpty()) {
// dog does not exist
} else {
Dog dog = dogs.get(0);
// dog exists
}
}
}
};
dogs = realm.where(Dog.class).equalTo("id", 1L).findAllAsync();
dog.addChangeListener(realmChangeListener);