Проблема с РМС

У меня проблема с RMS, мне нужно удалить запись и переместить записи после повышения уровня, есть ли шанс это сделать? Я пытался избежать этого, но в итоге я получил это :(


Есть ли способ преобразовать это:

public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
     int spacePos=0;

       for (int i =1; i<=rs.getNumRecords();i++){

       System.out.println("for loop\n");

  spacePos=RmsToStringDumper(i).indexOf(" ");
       System.out.println("spacePos: \n" +spacePos);

        hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
           }

       fr.append(hg);

}

во время (recordEnumeration.hasNextElement())? Конечно, с этой обрезкой строк :P


хорошо, может быть, я объясню проблему, с которой я сейчас страдаю. Я создал приложение для мобильных устройств, которое на данный момент создает профиль пользователя и записывает его в RMS, и оно работает нормально. Алгоритм работает следующим образом: у пользователя запрашивается имя профиля и некоторые другие детали, когда он / она делает, данные сохраняются. Схема записи выглядит так: Имя_профиля, модель, бренд и т.д. Затем программа обрезает записи, чтобы получить имя_профиля и помещает его в группу выбора. И это также работает как шарм, но настоящая проблема заключается в удалении, я могу удалить первую или вторую запись, но когда я добавляю новую [новый профиль], я получаю такую ​​ошибку:

javax.microedition.rms.InvalidRecordIDException: ошибка при поиске записи


person iie    schedule 23.12.2010    source источник


Ответы (1)


Я предполагаю, что вы имеете в виду, что вам нужно «перенумеровать» идентификаторы записей, чтобы пробел, созданный удалением, не существовал, и у вас есть аккуратная серия идентификаторов в диапазоне от 1 до n, количество записей.

Вы могли сделать это, но это было бы дорого — для записей нет «обновления», только операции добавления/вставки/удаления. Таким образом, вам нужно будет перебрать все записи, прочитать их, удалить и записать обратно с измененным идентификатором. Применение изменений в правильном порядке также может быть сложным.

Зачем нужно устранять пробелы? Вы можете выполнить итерацию по всему набору, «пропуская» промежутки, используя RecordEnumeration, возвращаемый методом RecordStore enumerateRecords. Или вы можете получить массив текущего набора идентификаторов, используя метод getRecordIDs. В любом случае вы можете повторять, не видя пробелов.

person martin clayton    schedule 23.12.2010