j2me удаляет запись из хранилища записей

#java-me #rms #recordstore

#java-me #rms #хранилище записей

Вопрос:

Проблема: не удается использовать deleteRecord() должным образом

Справочная информация: У меня есть простое приложение j2me, в котором я добавляю различные строки в хранилище записей и пытаюсь манипулировать содержимым хранилища записей. Я добавляю записи на одном экране, а затем читаю их на другом. Я могу перемещаться вперед и назад с помощью этих экранов

Подробное описание проблемы: Например, я добавляю «abc» (идентификатор записи равен 1), «def» (идентификатор равен 2) и «ghi» (идентификатор равен 3). Когда я удаляю эти записи в указанном порядке, rs.deleteRecord(3),rs.deleteRecord(2),rs.deleteRecord(1) все работает так, как и должно.

Когда я пытаюсь выполнить любой другой заказ, я получаю «Сообщение об ошибке: javax.microedition.rms.InvalidRecordIDException» Также, когда я пытаюсь прочитать другие записи после этого удаления, вывода нет.

Я хочу иметь возможность удалять записи в любом порядке.

Заранее спасибо

Комментарии:

1. Если Я правильно прочитал документ , то этого не должно произойти. Вы пробовали перечислять записи после каждого deleteRecord() вызова, чтобы увидеть, какие из них остались (содержимое и идентификатор)?

Ответ №1:

Откройте RecordStore это имя rs… И затем…

 RecordEnumeration re=null;
try {
  re = rs.enumerateRecords(null, null, true);
} catch (RecordStoreNotOpenException ex) {
  ex.printStackTrace();
}

int rid=0;

try {
  while (re.hasNextElement()) {
    rid=re.nextRecordId();
    try {
      rs.deleteRecord(rid);
    } catch (RecordStoreNotOpenException ex) {
      ex.printStackTrace();
    } catch (InvalidRecordIDException ex) {
      ex.printStackTrace();
    } catch (RecordStoreException ex) {
      ex.printStackTrace();
    }
  }
} catch (InvalidRecordIDException ex) {
  ex.printStackTrace();
}
  

Ответ №2:

Я столкнулся с той же проблемой. Но после внимательного прочтения класса api и этого метода я обнаружил строку, написанную в объяснении, что «Запись удалена из хранилища записей. Идентификатор записи для этой записи НЕ используется повторно.» Следовательно, обновить и добавить определенные данные с тем же номером записи в хранилище записей невозможно! Поэтому вам нужно либо использовать метод перечисления записей, либо использовать класс с требуемыми полями, которые вы хотите сохранить, преобразовать его в ByteArray, а затем сохранить ByteArray в хранилище записей. Надеюсь, это поможет вам и другим.