RMS问题

时间:2010-12-23 17:11:10

标签: java-me rms

我有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


好吧,也许我会解释我现在遇到的问题。我已经在移动设备上创建了一个应用程序,它现在正在创建一个用户配置文件并将其写入RMS,它的工作正常。该算法的工作方式如下:用户被要求提供配置文件的名称和其他一些细节,当他/她完成时,将保存数据。记录的模式如下所示:Name_of_profile,model,brand等。程序修剪记录以获取name_of_profile并将其放入choiceGroup。它也像魅力一样恶化,但真正的问题是删除,我可以删除第一个或第二个记录,但当我把新的[新配置文件]我收到这样的错误:

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

1 个答案:

答案 0 :(得分:1)

我认为你的意思是你需要“重新编号”记录ID,以便删除所产生的间隙不存在,并且你有一系列整齐的id,范围从1到n,即记录数。

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

为什么需要消除差距?您可以使用RecordStore enumerateRecords方法返回的RecordEnumeration迭代整个集合,“跳过”间隙。或者,您可以使用getRecordIDs方法获取当前id组的数组。在任何一种情况下,您都可以在不看间隙的情况下进行迭代。