j2me从记录库中删除记录

时间:2011-06-06 13:42:02

标签: java-me rms recordstore

问题: 无法正确使用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” 此外,当我尝试在删除后读取其他记录时,没有输出。

我希望能够以任何顺序删除记录。

提前致谢

2 个答案:

答案 0 :(得分:4)

打开RecordStore,该名称为rs ... 然后......

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

答案 1 :(得分:2)

我遇到了同样的问题。但是在仔细阅读api类和这个方法后,我发现在解释中写了一行“记录从记录存储中删除。该记录的recordId不被重用。” 因此,在记录库中无法以相同的记录号更新和添加特定数据! 因此,您需要使用Record枚举技术或使用包含要存储的必填字段的类,将其转换为ByteArray,然后将ByteArray存储在记录存储中。 希望这会对你和其他人有所帮助。

相关问题