#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 в хранилище записей. Надеюсь, это поможет вам и другим.