3

問題:deleteRecord()正しく使用できない

背景: さまざまな文字列をレコード ストアに追加し、レコード ストアの内容を操作しようとする単純な j2me アプリケーションがあります。ある画面でレコードを追加してから、別の画面でそれらを読み取ります。これらの画面で前後に移動できます

問題の詳細な説明: たとえば、"abc" (recordID は 1)、"def" (id は 2)、"ghi" (id は 3) を追加します。これらのレコードを順番に削除すると、rs.deleteRecord(3),rs.deleteRecord(2),rs.deleteRecord(1)すべてが想定どおりに機能します。

他の注文をしようとすると、「Msg: javax.microedition.rms.InvalidRecordIDException」が表示されます。 また、この削除後に他のレコードを読み取ろうとすると、出力がありません。

任意の順序でレコードを削除できるようにしたい。

前もって感謝します

4

2 に答える 2

4

その名前を開きRecordStoreます...そして...

RecordEnumeration re=null;
try {
  re = rs.enumerateRecords(null, null, true);
} catch (RecordStoreNotOpenException ex) {
  ex.printStackTrace();
}

int rid=0;

try {
  while (re.hasNextElement()) {
    rid=re.nextRecordId();
    try {
      rs.deleteRecord(rid);
    } catch (RecordStoreNotOpenException ex) {
      ex.printStackTrace();
    } catch (InvalidRecordIDException ex) {
      ex.printStackTrace();
    } catch (RecordStoreException ex) {
      ex.printStackTrace();
    }
  }
} catch (InvalidRecordIDException ex) {
  ex.printStackTrace();
}
于 2011-08-10T08:59:56.673 に答える
2

私は同じ問題に直面しました。しかし、APIクラスとこのメソッドを注意深く読んだ後、「レコードはレコードストアから削除されました。このレコードのrecordIdは再利用されません。」という行が説明に書かれているのを見つけました。したがって、レコードストアでは、同じレコード番号で特定のデータを更新および追加することはできません! したがって、レコード列挙手法を使用するか、格納する必要のあるフィールドを持つクラスを使用して、それを ByteArray に変換してから、ByteArray をレコード ストアに格納する必要があります。これがあなたや他の人に役立つことを願っています。

于 2012-11-20T23:01:33.863 に答える