如何在J2ME中自己设置记录ID

时间:2011-10-07 07:49:22

标签: java-me midp rms

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

1 个答案:

答案 0 :(得分:3)

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

请参阅RecordStore API documentation了解这是如何工作的。

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

迭代商店的代码显示为OK:

     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方法),其版本都会递增.16 MIDlets可以使用它来快速判断是否有任何内容被修改......”