我有RMS的问题,我需要的是删除记录并在升级后移动记录,有没有机会这样做?我试图避免这种情况,但最重要的是我最终得到了这个:(
有没有办法转换它:
public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
int spacePos=0;
for (int i =1; i<=rs.getNumRecords();i++){
System.out.println("for loop\n");
spacePos=RmsToStringDumper(i).indexOf(" ");
System.out.println("spacePos: \n" +spacePos);
hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
}
fr.append(hg);
}
into while(recordEnumeration.hasNextElement())?当然有这个字符串修剪:P
javax.microedition.rms.InvalidRecordIDException:错误查找记录
答案 0 :(得分:1)
我认为你的意思是你需要“重新编号”记录ID,以便删除所产生的间隙不存在,并且你有一系列整齐的id,范围从1到n,即记录数。
你可以这样做,但它会很昂贵 - 记录没有'更新',只有添加/插入/删除操作。因此,您需要遍历所有记录,读取它们,删除它们并使用修改后的ID将它们写回来。以正确的顺序应用更改可能也很棘手。
为什么需要消除差距?您可以使用RecordStore enumerateRecords
方法返回的RecordEnumeration迭代整个集合,“跳过”间隙。或者,您可以使用getRecordIDs
方法获取当前id组的数组。在任何一种情况下,您都可以在不看间隙的情况下进行迭代。