【问题标题】:Delete Single Object Data /Row from Realm in android从android中的领域删除单个对象数据/行
【发布时间】:2016-09-24 00:02:10
【问题描述】:

我添加了一个用户这样的数据:

Realm realm = Realm.getDefaultInstance();
newUser = new UserDatabase();

realm.executeTransaction(new Realm.Transaction() {

  public void execute(Realm realm) {
     newUser.setClassName(classSectionName);
     newUser.setClassNO(classNO);
     newUser.setImageUrl(imageUrl);
     newUser.setRollNo(rollNO);
     newUser.setSchool(school);              

  // and now saved the data in peresistant data like this:
  realm.copyToRealm(newUser);
  }
});

但我找不到从领域数据库中删除单个条目的方法,即使我尝试过这样,它也不起作用。

Realm realm = Realm.getDefaultInstance();
UserDatabase tempUser = new UserDatabase();
final RealmResults<UserDatabase> students = realm.where(UserDatabase.class).findAll();

  for(int i=0 ;  i<students.size();i++){
     final int index =i;
     if((students.get(i).getUserID()).equals(prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt"))&&
     (students.get(i).getUserName()).equals(prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt"))){

        realm.executeTransaction(new Realm.Transaction() {

            public void execute(Realm realm) {

             //Trying to delete a row from realm.                                   

             students.deleteFromRealm(index);

             }
            });

    }
 }

有人知道吗?

【问题讨论】:

    标签: android database realm delete-row


    【解决方案1】:

    您始终可以使用 Realm Query 而不是运行循环从 RealmResults&lt;UserDatabase&gt; 中找到匹配的 instance。试试这个。

    final RealmResults<UserDatabase> students = realm
        .where(UserDatabase.class)
        .findAll();
    
    UserDatabase userdatabase = students
        .where()
        .equalTo("userId",prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt"))
        .equalTo("userName",prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt"))
        .findFirst();
    
    if(userdatabase!=null) {
    
        if (!realm.isInTransaction()) {
            realm.beginTransaction();
        }
    
        userdatabase.deleteFromRealm();
    
        realm.commitTransaction();
    }
    

    注意: 我只是假设您的列使用“userId”和“userName”,您可以改写您的列名。

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多