删除RMS中的特定记录?

时间:2012-05-04 13:51:51

标签: java-me midp rms

我正在创建一个读/写RMS记录的J2ME应用程序。我能读写 在RMS中记录但现在的问题是我想通过接受一些值来删除记录 比如accountNumber RMS记录的格式。

101,ABC,12345,12345   

和String str包含以下数据。

String str=accountSrNumber +","+ name +","+ balance +","+ TextDeposit;
deleteRecStore(str,accountSrNumber);

我需要接受来自用户的accountNumber(101)并需要删除此记录 这是我的删除方法。

 public void deleteRecStore(String str, String accNumber121) //
 {
   int s=str.indexOf(accNumber121);     
   System.out.println("index in delete function"+s);          
           if(s==0)
            {
             try{

                 rs.deleteRecord(s);
                    // RecordStore.deleteRecordStore(REC_STORE);
                     System.out.println("record delete successfully");
                 }
                catch (Exception e)
                {}   
     }
}  

我尝试使用方法rs.deleteRecord(s)RecordStore.deleteRecordStore(REC_STORE); 但没有人帮忙。

1 个答案:

答案 0 :(得分:4)

你总是删除作为第一条记录的记录0,这是一个坏主意。 例如,如果添加两个记录并删除它们,然后添加另一个记录,则它将被索引为2,因此您必须调用deleteRecord(2)将其删除。 方法deleteRecordStore()删除整个recordStore(包含记录) - 之后,如果你创建一个,下一个添加的记录将被索引为零。

如果我明白了,你想用它的acoountNumber删除一条记录。 如果我是对的,你需要通过它的内容找到recordID。代码可能看起来像这样(可能有错误,没有测试,但想法很重要):

    public void deleteRecStore(String accNumber121) {
        RecordEnumeration e = rs.enumerateRecords();
        int found = -1;
        while (e.hasMoreElements()) {
            int id = e.nextRecordId();
            String next = new String(e.nextRecord());
            if (next.startsWidth(accNumber121)) {
                found = id;
            }
        }
        if (found == -1) {
            System.out.println("not found!");
        } else {
            rs.deleteRecord(found);
        }
    }