如何检查 android 中的 Realm 数据库中是否存在 table/class?
How to check if a table/class exists in Realm database in android?
在某个场景中,我需要检查领域数据库中是否存在我预期的 table/class。因为如果我使用 DynamicRealm
-
做这样的查询
DynamicRealm dynamicRealm = DynamicRealm.getInstance(myRealmConfig);
dynamicRealm.where("myExpectedClass").findAll();
然后我遇到了这样的异常 -
Class does not exist in the Realm and cannot be queried: myExpectedClass
所以为了防止这个异常,我需要先确定它是否存在于数据库中
您可以使用:
dynamicRealm.getSchema().contains("myExpectedClass")
我刚刚调试并找到了一些方法来检查这种情况,并制作了一个无异常的可重用方法 -
/**
* @param dynamicRealm The source dynamic realm created using the same realm configuration.
* @param clazzNameExpected The CASE-SENSITIVE name of the expected class we want to check whatever it is existing in
* realm database or not.
* @return
*/
public static boolean isClassExistInRealmDB(DynamicRealm dynamicRealm,String clazzNameExpected) {
return (dynamicRealm != null && dynamicRealm.getSchema() != null) &&
dynamicRealm.getSchema().contains(clazzNameExpected);
}
在某个场景中,我需要检查领域数据库中是否存在我预期的 table/class。因为如果我使用 DynamicRealm
-
DynamicRealm dynamicRealm = DynamicRealm.getInstance(myRealmConfig);
dynamicRealm.where("myExpectedClass").findAll();
然后我遇到了这样的异常 -
Class does not exist in the Realm and cannot be queried: myExpectedClass
所以为了防止这个异常,我需要先确定它是否存在于数据库中
您可以使用:
dynamicRealm.getSchema().contains("myExpectedClass")
我刚刚调试并找到了一些方法来检查这种情况,并制作了一个无异常的可重用方法 -
/**
* @param dynamicRealm The source dynamic realm created using the same realm configuration.
* @param clazzNameExpected The CASE-SENSITIVE name of the expected class we want to check whatever it is existing in
* realm database or not.
* @return
*/
public static boolean isClassExistInRealmDB(DynamicRealm dynamicRealm,String clazzNameExpected) {
return (dynamicRealm != null && dynamicRealm.getSchema() != null) &&
dynamicRealm.getSchema().contains(clazzNameExpected);
}