How to truncate all tables in realm android

寵の児 提交于 2019-12-19 02:39:08

问题


Hi im trying to truncateall tables in android when a user logs out. im using realms default path only.

realm = Realm.getInstance(getApplicationContext());

public void clearDB() {
    Realm.deleteRealmFile(instance);
}

回答1:


Update

Use realm.delete(Foo.class) instead as clear() is deprecated. From 0.91.0 all @Deprecated methods will be removed.


Christian from Realm here. That approach will work as long as you have closed all open Realm instances. Another approach is clearing the tables you want like this:

realm = Realm.getInstance(getApplicationContext());

public void clearDB() {
  realm.executeTransaction(new Realm.Transaction() {
     @Override
     public void execute(Realm realm) {
        realm.clear(Foo.class);
        realm.clear(Bar.class);
     }
  });
}

You can read more here: http://realm.io/docs/java/0.77.0/api/io/realm/Realm.html#clear(java.lang.Class)




回答2:


use realm.delete(Myclass.class);

realm = Realm.getDefaultInstance();

    realm.beginTransaction();
    realm.delete(SuggestedAppDto.class);
    realm.delete(WifiSpotsDto.class);
    realm.commitTransaction();
    realm.close();

this worked for me.




回答3:


If you want to clear all tables, you may consider to use realm.deleteAll() method:

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();



回答4:


Delete all tables:

Realm.init(fragmentActivity);
    RealmConfiguration realmConfig = new RealmConfiguration.Builder().deleteRealmIfMigrationNeeded().build();
    Realm realm = Realm.getInstance(realmConfig);
    realm.beginTransaction();
    try {
        realm.deleteAll();
        realm.commitTransaction();
    } catch (Exception e) {
        e.printStackTrace();
        realm.cancelTransaction();
    } finally {
        realm.close();
    }

delete one or more table:

  public void clearSearchHistory() {

    Realm.init(fragmentActivity);
    RealmConfiguration realmConfig = new RealmConfiguration.Builder().deleteRealmIfMigrationNeeded().build();
    Realm realm = Realm.getInstance(realmConfig);

    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            realm.delete(Foo.class);
        }
    });


}



回答5:


If you want to clear all the tables without worrying about forgetting to clear new tables that you might create in the future, just do this

// mRealm is your realm instance

mRealm.beginTransaction();
Set<Class<? extends RealmModel>> tables = mRealm.getConfiguration().getRealmObjectClasses();
for (Class<? extends RealmModel> table : tables) {
    mRealm.delete(table);
}
mRealm.commitTransaction();


来源:https://stackoverflow.com/questions/28084892/how-to-truncate-all-tables-in-realm-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!