【发布时间】:2017-05-08 08:11:44
【问题描述】:
我正在使用 Realm 制作学校建筑和教室的数据库。但是,try-catch 中的“for-loop”不起作用:
public void startCheckRealm() {
// Writing DataBase with Realm
try {
Log.d("Realm", "Init");
InitializeAPI.init_BuildingRoom(getActivity().getApplicationContext());
Log.d("Realm", "Complete");
} catch(Exception e) {
e.printStackTrace();
}
// Trying to check the Database whether it is right or wrong
try {
Log.d("Realm Test", "2nd Try Catch");
Realm.init(getActivity().getApplicationContext());
Realm realm = Realm.getDefaultInstance();
RealmResults<BuildingList> buildingLists = realm.where(BuildingList.class).findAllSorted("buildingCode");
int totalNumber = 0;
for(int i = 0; i < buildingLists.size(); i++) {
Log.d("For", "index = " + i);
RealmResults<RoomList> rooms = buildingLists.get(i).getRoomList().sort("roomCode");
String BuildingName = buildingLists.get(i).getBuildingName();
String BuildingCode = buildingLists.get(i).getBuildingCode();
for(int idx = 0; idx < rooms.size(); idx++) {
totalNumber++;
String RoomCode = rooms.get(idx).getRoomCode();
String RoomName = rooms.get(idx).getRoomName();
Log.d("Realm Test", "Number :: " + String.valueOf(totalNumber) + " BuildingCode :: " + BuildingCode + "\t\t BuildingName :: " + BuildingName + "\t\t RoomCode :: " + RoomCode + "\t\t RoomName :: " + RoomName);
}
}
Log.d("Realm Test", "2nd Try Catch Complete + " + String.valueOf(totalNumber));
} catch(RealmException e) {
e.printStackTrace();
}
}
在第一个try-catch中,做数据库的方法是完整的,没有异常。我很好奇这个数据库是对还是错。
所以,在第二次 try-catch 中,我尝试使用查询检查领域文件。
问题是“for-loop”在第二次 try-catch 中不起作用。 sn-p 下面是我的 logcat。
D/Realm: Init
I/System.out: bdList getLength :: 52
I/System.out: roomList getLength :: 2376
D/Realm: Complete
D/Realm Test: 2nd Try Catch
D/Realm Test: 2nd Try Catch Complete + 0
我想用 Log 检查我的领域数据,但是如您所见,它不起作用。
如果没有问题,logcat 会显示很多我的建筑和房间列表,并以“D/Realm Test: 2nd Try Catch Complete + 2376”结尾。
你能解释一下它不起作用的原因吗?即使没有异常,我也无法理解为什么它不起作用。
【问题讨论】:
-
buildingLists 为空?
-
您的查询很可能是错误的,并返回零记录。我对 Realm 一点也不熟悉,但你能手动调查一下数据库,看看记录是否真的存在吗?
-
@Jerry06 也许不。 InitializeAPI.init_BuildingRoom(getActivity().getApplicationContext());第一个 try-catch 中的方法生成 52 个 buildingList。在logcat中可以看到buildingList的长度。
-
@KenY-N 如果我连续调用 2 次方法,它会说“buildingList 的主键重复”。 (当然,我调用了 2 次方法。)也就是说,我在领域中的写作数据库似乎是正确的,不是吗?
-
试试把 Log.d("buildingLists.size() ", buildingLists.size());在你的循环之前
标签: java android for-loop try-catch realm