1

RecordStore私は自分のデータを保存するために使用します。

にデータを保存するとRecordStore、各レコードのレコードIDが自動的に生成されます。

しかし、どうすれば自分でレコードIDを設定できますか?または、どうすればレコードIDを取得できますか?

recordstore.setRecord(..)このメソッドを使用してレコードストアを更新したいからです。

しかし、メソッドRecordEnumerationをフェッチして使用するために使用すると、奇数または偶数のIDが表示されます。つまり、8つのレコードがある場合、次のような奇数または偶数のレコードのみが出力されます。RecordStorenextRecordId()

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を自分で設定するメソッドがありません。

これがどのように機能するかについては、 RecordStoreAPIのドキュメントを参照してください。

  • 「レコードは、整数値であるrecordIdによって、特定のレコードストア内で一意に識別されます。このrecordIdは、レコードの主キーとして使用されます。レコードストアで作成される最初のレコードのrecordIdは1になります。 RecordStoreに追加された後続の各レコードには、その前に追加されたレコードより1つ大きいrecordIdが割り当てられます。つまり、2つのレコードがレコードストアに追加され、最初のレコードのrecordIdが「n」の場合、次のレコードには'n+1'のrecordId... "

ストアを反復するコードは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メソッドによって)変更されるたびに、そのバージョンがインクリメントされます。これをMIDletが使用すると、何かが変更されたかどうかをすばやく確認できます...」
于 2011-10-10T09:02:25.430 に答える