问题:
无法正确使用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” 此外,当我尝试在删除后读取其他记录时,没有输出。
我希望能够以任何顺序删除记录。
提前致谢
答案 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存储在记录存储中。 希望这会对你和其他人有所帮助。