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

Проблема: невозможно использовать 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 ответа

Решение

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

Открыто 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();
}
Другие вопросы по тегам