Как самостоятельно установить идентификатор записи в J2ME - PullRequest
1 голос
/ 07 октября 2011

Я использую RecordStore для хранения своих данных.

Я знаю, что когда мы храним данные в RecordStore, он автоматически генерирует идентификатор записи для каждой записи.

Но как мне установить идентификатор записи самостоятельно? Или как мне получить идентификатор записи?

Поскольку я хочу использовать метод recordstore.setRecord(..) для обновления моего хранилища записей.

Но когда я использую RecordEnumeration для получения RecordStore и использую метод nextRecordId(), он просто показывает нечетные или четные идентификаторы. Я имею в виду, когда у меня есть 8 записей, он просто печатает только нечетные или четные записи, как

2 4 6 8

Мой код:

    handleRecord.openRecordStore(handleRecord.getRecordName());
    RecordEnumeration re;
    try {
         int rc = handleRecord.getRecordStore().getNumRecords();
         re = hrs.getRcs().enumerateRecords(null, null, true);

         while(re.hasNextElement()) {
             int rid = re.nextRecordId();
             System.out.println(rid);
         }
    } catch(Exception e) {
        System.out.println(e.toString());
    }

1 Ответ

3 голосов
/ 10 октября 2011

MIDP API не имеет метода для установки идентификатора записи самостоятельно.

См. Документация RecordStore API для объяснения, как это должно работать.

  • "Записи однозначно идентифицируются в данном хранилище записей по их recordId, который является целочисленным значением. Этот recordId используется в качестве первичного ключа для записей. Первая запись, созданная в хранилище записей, будет иметь recordId, равный единице.(1). Каждой последующей записи, добавленной в RecordStore, будет присвоен идентификатор записи, который на одну единицу больше, чем запись, добавленная перед ним. То есть, если две записи добавляются в хранилище записей, а первая имеет идентификатор записи, равный 'n',next будет иметь recordId 'n + 1' ... "

Код, который выполняет итерацию хранилища, выглядит нормально:

     re = hrs.getRcs().enumerateRecords(null, null, true);
     while(re.hasNextElement()) {
         int rid = re.nextRecordId();
         System.out.println(rid);
     }

, если вы получаете только нечетная или четная запись , например, 2-4-6 ... или 1-3-5 ..., напечатанные в результате, первое, что нужно проверить, является ли каким-то образом удаленные записи, которые "отсутствуют" -это можно сделать, например, используя RecordStore.getVersion мethod:

  • "Каждый раз, когда хранилище записей изменяется (методами addRecord, setRecord или deleteRecord), его версия увеличивается.Это может быть использовано мидлетами для быстрого определения того, было ли что-либо изменено ... "
...