在Realm中批量插入

时间:2015-10-20 05:53:01

标签: android realm

我决定将Realm用于我的项目。我已经阅读了文档,无法理解如何将所有手机联系人导入我的Realm数据库。 以前有人做过这种项目吗?请帮忙。

我使用过具有批量插入选项的Sugar ORM。 Realm是否有相同的或者可以替代它?

这是我到目前为止所做的事情:

package com.advisualinc.switchchat.Realm_DB;

import io.realm.RealmObject;
import io.realm.annotations.PrimaryKey;

/**
 * Created by Veeresh on 10/19/2015.
 */
public class R_ContactDB extends RealmObject {
    private String name;
    @PrimaryKey
    private String phone;
    private boolean matchedWithRecent;
    private int status;


    public R_ContactDB(String name, String phone, boolean matchedWithRecent, int   status)
    {
        this.name = name;
        this.phone = phone;
        this.matchedWithRecent = matchedWithRecent;
        this.status = status;
    }

    public R_ContactDB()
    {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public boolean isMatchedWithRecent() {
        return matchedWithRecent;
    }

    public void setMatchedWithRecent(boolean matchedWithRecent) {
        this.matchedWithRecent = matchedWithRecent;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}

3 个答案:

答案 0 :(得分:3)

使用Realm,不需要直接适用于SQLite中可用的批量插入的东西。不涉及查询语言的开销。

您只需在单个写入事务中通过Realm#copyToRealm批量插入多个对象。 如果您需要导入JSON数据,则有Realm#createOrUpdateAllFromJson(JSONArray)

答案 1 :(得分:0)

在2016年,realm为插入批量数据添加了一个新的api

realm.insertOrUpdate(Collections datas);

尝试这种方法以及更多,请看这里。 https://realm.io/blog/realm-java-1-1-0/

答案 2 :(得分:0)

kotlin中的完整代码

fun insertList(list: MutableList<MenuItems>) {
    val realm = AppDatabase.getRealmInstance() //get Realm Instance
    try {
        realm.executeTransaction { realmTr ->
            realmTr.copyToRealm(list)
        }
    } catch (error: Exception) {
        error.printStackTrace()
    } finally {
        realm.close()
    }
}