1

RecordStore用来存储我的数据。

我知道当我们将数据存储在 中时RecordStore,它会自动为每条记录生成一个记录 ID。

但是我怎样才能自己设置记录ID呢?或者我怎样才能得到记录ID?

因为我想用这个recordstore.setRecord(..)方法来更新我的记录库。

但是当我RecordEnumeration用来获取RecordStore和使用方法nextRecordId()时,它只显示奇数或偶数 id。我的意思是当我有 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());
    }
4

1 回答 1

3

MIDP API 没有自己设置记录 ID 的方法。

请参阅RecordStore API 文档以了解这应该如何工作。

  • “记录在给定记录存储中由它们的 recordId 唯一标识,它是一个整数值。此 recordId 用作记录的主键。在记录存储中创建的第一条记录的 recordId 等于一 (1)。添加到 RecordStore 的每个后续记录都将被分配一个比之前添加的记录大一的 recordId。也就是说,如果将两条记录添加到记录存储中,并且第一个的 recordId 为“n”,那么下一个将有一个'n + 1' 的记录 ID..."

迭代商店的代码看起来没问题:

     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方法来完成,例如:

  • “每次修改记录存储(通过 addRecord、setRecord 或 deleteRecord 方法)时,它的版本都会增加。MIDlet 可以使用它来快速判断是否有任何修改......”
于 2011-10-10T09:02:25.430 回答