开发者

j2me delete record from recordstore

开发者 https://www.devze.com 2023-03-10 23:06 出处:网络
Problem: unable to use deleteRecord() properly Background: I have a simple j2me application where I add various strings to the record store and try to manipulate the contents of the record store. I

Problem: unable to use deleteRecord() properly

Background: I have a simple j2me application where I add various strings to the record store and try to manipulate the contents of the record store. I add records on o开发者_JS百科ne screen and then read them on another. I can move back and forth with these screens

Problem description in detail: For example I add "abc" (recordID is 1) , "def" ( id is 2) and "ghi" ( id is 3). When I delete these records in the order rs.deleteRecord(3),rs.deleteRecord(2),rs.deleteRecord(1) everything works like it is supposed to.

When I try any other order I get "Msg: javax.microedition.rms.InvalidRecordIDException" Also when I try to read the other records after this deletion there is no output.

I want to be able remove the records in any order.

Thanks in advance


Open RecordStore that name is rs... And then...

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


I faced the same problem. But after carefully reading the api class and this method I found a line written in the explanation that "The record is deleted from the record store. The recordId for this record is NOT reused." Hence to update and add a specific data at the same record number is not possible in recordstore! Therefore you either need to use Record enumeration technique or use a class with the required fields you want to store , convert it into ByteArray and then store the ByteArray in a record store. Hope this would help you and others.

0

精彩评论

暂无评论...
验证码 换一张
取 消