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();
}