Удалить конкретную запись в RMS?

Я создаю одно приложение J2ME, которое читает/записывает запись RMS. Я могу читать и записывать
записи в RMS, но теперь проблема в том, что я хочу удалить запись, приняв некоторое значение
например, accountNumber.
Формат записи RMS.

101,ABC,12345,12345   

и String str содержат следующие данные.

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

И мне нужно принять accountNumber(101) от пользователя и удалить эту запись.
Вот мой метод Delete.

 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);.
Но ничего не помогает.


person Sandip Armal Patil    schedule 04.05.2012    source источник


Ответы (1)


Вы всегда удаляете запись 0, которая является первой записью, что является плохой идеей. Например, если вы добавите две записи и удалите их, а затем добавите еще одну запись, она будет проиндексирована как 2, поэтому вам придется вызвать deleteRecord(2), чтобы удалить ее. Метод deleteRecordStore() удаляет весь RecordStore (который содержит записи) - после этого, если вы создадите его, следующая добавленная запись будет проиндексирована как ноль.

Если я понял, вы хотите удалить запись по ее номеру счета. Если я прав, вам нужно найти идентификатор записи по ее содержимому. Код, вероятно, будет выглядеть так (могут быть ошибки, не проверял, но идея важна):

    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);
        }
    }
person Yaroslav Mytkalyk    schedule 04.05.2012