android 领域自动增量字段示例

qni6mghb  于 2023-03-06  发布在  Android
关注(0)|答案(2)|浏览(92)

我需要在安卓系统的Realm数据库中添加自动递增的key字段,我该怎么做?这可能吗?
先谢了。

qgzx9mmu

qgzx9mmu1#

Relam当前不支持自动增量
GitHub上看到此问题
你可以像这样到处工作

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
         // increment index
         Number num = realm.where(dbObj.class).max("id");
         int nextID;
         if(num == null) {
            nextID = 1;
         } else {
            nextID = num.intValue() + 1;
         }
         dbObj obj = realm.createObject(dbObj.class, nextID);
         // ...
    }
}
hgb9j2n6

hgb9j2n62#

Java绑定还不支持主键,但它已经在路线图上,并且具有很高的优先级-请参见:https://groups.google.com/forum/#!topic/realm-java/6 hFqdyoH 67 w。作为一种解决方法,您可以使用以下代码段生成密钥:

int key;
try {
  key = realm.where(Child_pages.class).max("id").intValue() + 1;
} catch(ArrayIndexOutOfBoundsException ex) {
 key = 0; // when there is no object in the database yet
}

我使用singleton factory for generating primary keys作为更通用的解决方案,它具有更好的性能(不需要每次都查询max("id"))。
如果你需要更多的上下文,在Realm Git Hub中有一个很长的讨论:文档如何设置自动增量ID?

相关问题