如何截断领域 android 中的所有表
How to truncate all tables in realm android
您好,我正在尝试在用户注销时截断 android 中的所有表。我仅使用领域默认路径。
realm = Realm.getInstance(getApplicationContext());
public void clearDB() {
Realm.deleteRealmFile(instance);
}
更新
使用 realm.delete(Foo.class)
代替,因为 clear()
已弃用。从 0.91.0
所有 @Deprecated
方法都将被删除。
这里是 Realm 的基督徒。
只要您关闭了所有打开的 Realm 实例,该方法就会起作用。
另一种方法是像这样清除您想要的表:
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);
}
});
}
您可以在这里阅读更多内容:http://realm.io/docs/java/0.77.0/api/io/realm/Realm.html#clear(java.lang.Class)
使用realm.delete(Myclass.class);
realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(SuggestedAppDto.class);
realm.delete(WifiSpotsDto.class);
realm.commitTransaction();
realm.close();
这对我有用。
如果您想清除所有表而不担心忘记清除您将来可能创建的新表,只需执行此操作
// 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();
如果要清除所有表,可以考虑使用realm.deleteAll()
方法:
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
删除所有 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();
}
删除一个或多个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);
}
});
}
您好,我正在尝试在用户注销时截断 android 中的所有表。我仅使用领域默认路径。
realm = Realm.getInstance(getApplicationContext());
public void clearDB() {
Realm.deleteRealmFile(instance);
}
更新
使用 realm.delete(Foo.class)
代替,因为 clear()
已弃用。从 0.91.0
所有 @Deprecated
方法都将被删除。
这里是 Realm 的基督徒。 只要您关闭了所有打开的 Realm 实例,该方法就会起作用。 另一种方法是像这样清除您想要的表:
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);
}
});
}
您可以在这里阅读更多内容:http://realm.io/docs/java/0.77.0/api/io/realm/Realm.html#clear(java.lang.Class)
使用realm.delete(Myclass.class);
realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.delete(SuggestedAppDto.class);
realm.delete(WifiSpotsDto.class);
realm.commitTransaction();
realm.close();
这对我有用。
如果您想清除所有表而不担心忘记清除您将来可能创建的新表,只需执行此操作
// 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();
如果要清除所有表,可以考虑使用realm.deleteAll()
方法:
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.deleteAll();
realm.commitTransaction();
realm.close();
删除所有 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();
}
删除一个或多个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);
}
});
}