簡體   English   中英

僅當 Record 是新的時才更新 Realm 表(Java)

[英]update Realm table only if Record is new (Java)

僅當記錄是新記錄時(通過檢查記錄的 objectId 在我存儲的表中尚不存在),我才嘗試更新我的表,我的 objectId 是主鍵。 我嘗試添加條件realm.where(NotesRealmClass.class).notEqualTo("objectId", Id); 但它似乎不起作用如何僅當記錄是新記錄時我才能添加記錄,或者我們可以說 - 停止更新以前存儲的記錄

public void storeNotes( String Id, String Title ,String Location) {

    realm.beginTransaction();
    NotesRealmClass Notes = new NotesRealmClass();
    Notes.setobjectId(Id);
    Notes.setLocation(Location);
    Notes.setTitle(Title);
    realm.where(NotesRealmClass.class).notEqualTo("objectId", Id); // i tired to check if we already have the object with object Id 
    realm.copyToRealmOrUpdate(Notes);
    Toast.makeText(context, "Notes Stored", Toast.LENGTH_SHORT).show();
    realm.commitTransaction();

}

有2個選項。

您可以將方法copyToRealm()try...catch Realm 不允許創建具有相同主鍵的對象並拋出異常。

public void storeNotes( String Id, String Title ,String Location) {
    try {
        realm.beginTransaction();
        NotesRealmClass Notes = new NotesRealmClass();
        Notes.setobjectId(Id);
        Notes.setLocation(Location);
        Notes.setTitle(Title);
        realm.copyToRealm(Notes); // <======
        Toast.makeText(context, "Notes Stored", Toast.LENGTH_SHORT).show();
        realm.commitTransaction();
    } catch (Exception error) {
        realm.cancelTransaction();
    }
}

為了在沒有try...catch情況下做同樣的事情,並且更接近你的方法,你應該在你的代碼中進行修復

public void storeNotes( String Id, String Title ,String Location) {

    realm.beginTransaction();
    NotesRealmClass Notes = new NotesRealmClass();
    Notes.setobjectId(Id);
    Notes.setLocation(Location);
    Notes.setTitle(Title);
    if (realm.where(NotesRealmClass.class).equalTo("objectId", Id).count() == 0) {
        // there are no object with this `Id`
        realm.copyToRealmOrUpdate(Notes);
    } 
    Toast.makeText(context, "Notes Stored", Toast.LENGTH_SHORT).show();
    realm.commitTransaction();

}

檢查具有該 id 的對象數量是否等於 0 - 如果這是真的,則插入您的新對象:

if (realm.where(NotesRealmClass.class).equalTo("objectId", Id).count() == 0) {
    realm.copyToRealm(Notes);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM