如何在领域数据库中保存数据

时间:2018-02-18 11:08:30

标签: android realm

如何在Realm数据库中保存数据?我试着写下面的代码。示例:我有一个大小为4的列表。在for循环中,我可以查看此列表中的所有数据,并在执行此方法后 - copyToRealmOrUpdate。

所以,如果我想检查数据库的大小,我看到的大小只有1而不是4.

更有趣的是我在另一个类中使用了这个代码,它运行正常。问题是什么?我禁用了迁移,重写了代码,但我仍然不知道还能做些什么。

try {
            realm = Realm.getDefaultInstance();
            if (entityList.size() > 0) {
                realm.executeTransaction(r -> {
                    Log.d(LOGS, "SIze Entity list: " + entityList.size());
                    for (int i = 0; i < entityList.size(); i++) {
                        DbRealm db = new DbRealm();
                        db.setFromEntity(entityList.get(i));
                        Log.d(LOGS, "entityList.get(i): " + entityList.get(i));
                        Log.d(LOGS, "File: " + entityList.get(i).getFiles());
                        Log.d(LOGS, "Comment: " + entityList.get(i).getComment());
                        Log.d(LOGS, "Date: " + entityList.get(i).getDate());
                        r.copyToRealmOrUpdate(db);
                    }
                });
                Log.d(LOGS, "Check FindAll: " + String.valueOf(realm.where(DbRealm.class).findAll().size()));
            }
        } finally {
            if (realm != null) {
                realm.close();
            }
        }

1 个答案:

答案 0 :(得分:0)

如果您看到Realm documentation说明以下内容:

  

更新由相同PrimaryKey标识的现有RealmObject,或者如果找不到现有对象,则创建新副本。

在您的情况下,PrimaryKey是相同的,因此Realm更新数据而不是创建新数据。

所以我建议你在你的DbRealm对象中创建一个PrimaryKey variable,例如,你可以使用&#34; i&#34;变量虽然我不建议你,但试着看看它是你可以使用它的解决方案。