gpt4 book ai didi

exception - J2ME InvalidRecordIDException 诺基亚 2700

转载 作者:行者123 更新时间:2023-12-04 05:36:39 26 4
gpt4 key购买 nike

我有一个 RMS 有 512 条记录,从

rs.getNumRecords();

但是当我尝试使用 getRecordId(i) 读取记录时或者即使使用
rs.enumerateRecords( null, null, false );

我收到 InvalidRecordIDException ,对于从 1 到 180 的记录,我能够读取从 181 索引到 onwords 的记录。

我不会删除应用程序中任何地方的记录。

在处理(读取此 RMS)和覆盖应用程序之间存在退出应用程序的实例。

在读取记录时,我在 try 块的末尾关闭了 RMS。

是否有任何可能的原因导致 RMS 损坏或特定索引损坏?

使用 getRecord 读取 RMS 的代码是
 try {
RecordStore rs = RecordStore.openRecordStore(getTableName(), true);
ByteArrayInputStream inputStream = null;
DataInputStream inputDataStream = null;

int nor = rs.getNumRecords();

for(int i=1;i<=nor;i++)
{
System.out.println("i : "+i);

_recordByteArr = rs.getRecord(i);

inputStream = new ByteArrayInputStream(_recordByteArr);
inputDataStream = new DataInputStream(inputStream);

System.out.println("val at " + i + " ::" + new String(_recordByteArr));

//used inputDataStream.readUTF() here
}
if (inputDataStream != null) {
inputDataStream.close();
}
if (inputStream != null) {
inputStream.close();
}

rs.closeRecordStore();

} catch (Exception e) {
System.out.println("exp in read fieldtxn :" + e);
}

最佳答案

根据 enumerateRecords 上的文档方法“这是遍历记录存储中所有记录的最有效方法。”
我总是用 rs.enumerateRecords(null /*filter*/, null /*comparator*/, false /*keepUpdated*/)因为我相信这样更安全。
您收到 InvalidRecordIDException 很奇怪来自 RecordEnumeration遍历。一定要像这样使用它

RecordEnumeration re = rs.enumerateRecords( null, null, false );
while (re.hasNextElement()) {
int i = re.nextRecordId();
System.out.println("i : "+i);
_recordByteArr = rs.getRecord(i);
// ...
}

关于exception - J2ME InvalidRecordIDException 诺基亚 2700,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com