j2me удалить запись из хранилища - PullRequest
3 голосов
/ 06 июня 2011

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Открыть 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 голосов
/ 21 ноября 2012

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

...