1

我的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);

}

进入while(recordEnumeration.hasNextElement())?当然用这个字符串修剪:P


好的,也许我会解释我现在遇到的问题。我已经在移动设备上创建了一个应用程序,到目前为止,它正在创建一个用户配置文件并将其写入 RMS,它工作得很好。该算法的工作原理如下:用户被要求提供个人资料的名称和其他一些详细信息,当他/她完成时,正在保存数据。记录的模式如下所示:Name_of_profile、型号、品牌等。然后程序修剪记录以获取 name_of_profile 并将其放入choiceGroup。它也像一个魅力,但真正的问题是删除,我可以删除第一条或第二条记录,但是当我放入新的[新配置文件]时,我收到这样的错误:

javax.microedition.rms.InvalidRecordIDException:错误查找记录

4

1 回答 1

1

我想你的意思是你需要“重新编号”记录 id 以便删除造成的差距不存在,并且你有一系列从 1 到 n 的整齐的 id,即记录数。

可以这样做,但这会很昂贵——记录没有“更新”,只有添加/插入/删除操作。因此,您需要遍历所有记录,读取它们,删除它们并使用修改后的 id 将它们写回。以正确的顺序应用更改也可能很棘手。

为什么需要消除差距?您可以使用 RecordStoreenumerateRecords方法返回的 RecordEnumeration 遍历完整集,“跳过”间隙。getRecordIDs或者,您可以使用该方法获取当前 ID 集的数组。在任何一种情况下,您都可以迭代而不会看到间隙。

于 2010-12-23T17:28:11.897 回答