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

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

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

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

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

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

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


person Infinity    schedule 06.06.2011    source источник
comment
Я прочитал документ правильно, то этого не должно происходить. Вы пытались перечислить записи после каждого deleteRecord() вызова, чтобы увидеть, какие из них остались (идентификатор содержимого и)?   -  person Joachim Sauer    schedule 14.06.2011


Ответы (2)


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

person Soham Malakar    schedule 20.11.2012

Откройте 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();
}
person Aung    schedule 10.08.2011