2

我正在创建一个读/写 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);.
但没有任何帮助。

4

1 回答 1

4

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

如果我明白了,您想通过它的 acountNumber 删除记录。如果我是对的,您需要通过它的内容找到记录 ID。代码大概会是这个样子(可能有错误,没测试过,但是思路很重要):

    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);
        }
    }
于 2012-05-04T18:08:22.867 回答