如何在JSON更新时更新Realm DB

时间:2017-04-15 04:43:33

标签: android json realm

嗨朋友我是新手,当我的json更新我需要更新我的领域数据库但我无法看到更新的JSON值在该领域我无法理解为什么它发生这样的请帮助我出

 final JSONArray userarray = response.getJSONArray("user");
                    final Realm invoicerealm = Realm.getDefaultInstance();
                    invoicerealm.executeTransaction(new Realm.Transaction() {
                        @Override
                        public void execute(Realm realm) {
//                            realm.delete(Upcoming_requests_adapter.class);
                            invoicerealm.createAllFromJson(Upcoming_requests_adapter.class,userarray);
                        }
                    });

2 个答案:

答案 0 :(得分:1)

首先,如果需要更新数据库,则透视RealmObject应包含将在其上执行更新操作的主键。这意味着 -

  

Upcoming_requests_adapter.java应该有一个主键。

如果它包含主键,则以下事务将创建新的RealmObject或将更新现有的RealmObject依赖于主键。

final Realm invoicerealm = Realm.getDefaultInstance();
invoicerealm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        realm.createOrUpdateAllFromJson(Upcoming_requests_adapter.class, userarray);
    }
});

答案 1 :(得分:0)

  

使用主键可以使用 copyToRealmOrUpdate()   方法,它将查找具有此主键的现有对象,   如果找到,则更新它;如果没有找到,它将创建一个新的   反而是对象。在没有的类上调用 copyToRealmOrUpdate()时   主键,将抛出异常。

您可以从以下示例中获得参考:

final MyObject obj = new MyObject(); //Your realm object class
obj.setId(42);
obj.setName("Fish");
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
    // This will update an existing object with the same primary key
    // or create a new object if an object with no primary key = 42
    realm.copyToRealmOrUpdate(obj);
}
});