1

RMS に問題があります。レコードを削除し、レベルアップ後にレコードを移動する必要があります。それを行う機会はありますか? 私はこれを回避しようとしましたが、全体として、これで終わります:(


これを変換する方法はありますか:

public void profilRmsPopulator(Form fr, ChoiceGroup hg) throws RecordStoreNotOpenException, RecordStoreException{
     int spacePos=0;

       for (int i =1; i<=rs.getNumRecords();i++){

       System.out.println("for loop\n");

  spacePos=RmsToStringDumper(i).indexOf(" ");
       System.out.println("spacePos: \n" +spacePos);

        hg.append(RmsToStringDumper(i).substring(0, spacePos),null);
           }

       fr.append(hg);

}

while (recordEnumeration.hasNextElement()) に? もちろん、この文字列トリミングで:P


わかりました、多分私が今苦しんでいる問題を説明します。モバイルでアプリを作成しましたが、これまでのところ、ユーザー プロファイルを作成して RMS に書き込んでいますが、問題なく動作しています。アルゴリズムは次のように機能します。ユーザーはプロファイルの名前とその他の詳細を尋ねられ、完了するとデータが保存されます。レコードのスキーマは次のようになります: Name_of_profile、モデル、ブランドなど。プログラムはレコードをトリミングして name_of_profile を取得し、choiceGroup に入れます。また、それも魅力のように機能しますが、実際の問題は削除にあり、最初または2番目のレコードを削除できますが、新しいレコード[新しいプロファイル]を配置すると、次のようなエラーが表示されます:

javax.microedition.rms.InvalidRecordIDException: レコード検索エラー

4

1 に答える 1

1

削除によって作成されたギャップが存在しないように、レコード ID を「再番号付け」する必要があり、1 から n (レコード数) までの範囲の一連の ID をきちんと持っていることを意味していると思います。

それを行うこともできますが、費用がかかります-レコードの「更新」はなく、追加/挿入/削除操作のみです。したがって、すべてのレコードを繰り返し処理し、それらを読み取り、削除し、変更された ID で書き戻す必要があります。変更を正しい順序で適用するのも難しい場合があります。

なぜギャップをなくす必要があるのですか?enumerateRecordsRecordStoreメソッドによって返される RecordEnumeration を使用して、ギャップを「スキップ」して、完全なセットを反復処理できます。または、getRecordIDsメソッドを使用して現在の ID セットの配列を取得することもできます。どちらの場合でも、ギャップを確認せずに反復できます。

于 2010-12-23T17:28:11.897 に答える