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

发布于 2024-12-09 03:52:13 字数 926 浏览 0 评论 0原文

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

I use RecordStore to store my data.

I know when we store data in RecordStore, it automatically generates a record id for each record.

But how can I set the record id by myself? Or how can I get the record id?

Because I want to use the recordstore.setRecord(..) method to update my recordstore.

But when I use RecordEnumeration to fetch RecordStore and use method nextRecordId(), it just shows odd or even ids. I mean when I have 8 records, it just prints out only odd or even records like

2 4 6 8

My code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水水月牙 2024-12-16 03:52:13

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

请参阅 RecordStore API文档 解释这是如何工作的。

  • “记录在给定记录存储中通过其 recordId 进行唯一标识,该 recordId 是一个整数值。此 recordId 用作记录的主键。在记录存储中创建的第一条记录的 recordId 等于 1 ( 1). 添加到 RecordStore 的每个后续记录都将被分配一个比之前添加的记录大 1 的 recordId。 也就是说,如果将两条记录添加到记录存储中,并且第一个记录的 recordId 为“n”,则下一个记录的 recordId 为 'n'。将有一个 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 方法来完成:

  • ”每次修改记录存储时(通过 addRecord, setRecord 或 deleteRecord 方法)其版本会递增。MIDlet 可以使用它来快速判断是否有任何内容被修改...”

MIDP API doesn't have method to set record id by yourself.

See RecordStore API documentation for explanation how this is supposed to work.

  • "Records are uniquely identified within a given record store by their recordId, which is an integer value. This recordId is used as the primary key for the records. The first record created in a record store will have recordId equal to one (1). Each subsequent record added to a RecordStore will be assigned a recordId one greater than the record added before it. That is, if two records are added to a record store, and the first has a recordId of 'n', the next will have a recordId of 'n + 1'..."

The code that iterates the store appears OK:

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

if you're getting only odd or even record like 2-4-6... or 1-3-5... printed as a result, first thing to check is whether you somehow removed records that are "missing" - this could be done eg using RecordStore.getVersion method:

  • "Each time a record store is modified (by addRecord, setRecord, or deleteRecord methods) its version is incremented. This can be used by MIDlets to quickly tell if anything has been modified..."
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文