RMS疑惑

St0ne82 2005-04-10 11:43:55
RMS(Record Management System)为我们提供了数据的长期存储机制.我们可以利用RecordStore的addRecord, setRecord, deleteRecord等方法进行记录的添加,修改,删除等操作.
如果我打算保存一个数据用来指示用户是否设置了开机密码,是不是用addRecord方法向RecordStore中添加进去就好了?如果是这样的话,下次用户开机的时候,我们如何去读取这份数据呢?RecordStore类只能根据recordId去访问对应的记录.即使addRecord方法返回了一个recordId,我们仍然不能使用到它:-(
请问,像这种问题,大家是如何处理的?
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
St0ne82 2005-04-11
  • 打赏
  • 举报
回复
大家是如何处理的呀?
yefeng177 2005-04-11
  • 打赏
  • 举报
回复
可以保存两个数据集,第一个(比如说R1)是保存正常数据,第二个是保存第数据库关键值与R1中产生的recordID,也就是说再添加一个索引集合,就可以直接通过recordID来调用了
St0ne82 2005-04-11
  • 打赏
  • 举报
回复
谢谢各位! 问题可能解决了.先试一下,有问题再来麻烦大家:-)
cuilichen 2005-04-11
  • 打赏
  • 举报
回复
楼主,
你可以看看Blog:

http://blog.csdn.net/cuilichen

每一条记录都可以还原成用户可以看懂的信息。
诗海 2005-04-11
  • 打赏
  • 举报
回复
这是我研究了三十多年后解决的:)(给我高分啊:)
如果你存储的数据库为"dbdata",则创建一个索引数据库,为"dbdataindex",这个index只有一条记录,专门用于对dbdata的索引。每次对dbdata的修改,都反应到dbdataindex中。这样,你就能明确知道需要的数据在哪个索引中。
我在我的项目中就是用这种方式实现的。
efei 2005-04-10
  • 打赏
  • 举报
回复
开机?还是运行你这个程序?

J2ME无法做到手机一开机就自动运行

添加第一个记录,返回的编号就是1。

如果你要修改它,先把数据库删了,再建立,这样加的第一个记录的ID还是1
St0ne82 2005-04-10
  • 打赏
  • 举报
回复
我所说的开机这样的:用户进行了一些操作,比如,设置了问候语. 然后,用户关了手机(可能是使用了一段时间没有电了 或是 强行关了机). 现在希望用户重新开机的时候,就可以看到已经设置了的问候语.

这些数据是用RMS来保存的吗?如果是的话,这些数据应该如何提取到?需要对这些保存的数据进行一些人为的约定吗?比如,设置数据的第0个字节(byte[0])的值:

用户电话列表 byte[0] = 0x00;
用户密码设置 byte[0] = 0x01;
... 0x..
St0ne82 2005-04-10
  • 打赏
  • 举报
回复
我的意思是要实现用户的配置保存.当用户重新开机的时候,能够读取用户进行的设置.
这些数据如何准确地得到?这些API只能通过记录的ID去访问,而添加时的recordID又不能被利用:-(

由于这些数据可能会在不同的界面(Displayable对象)中设置,所以,并不知道记录对应着ID为何.而且,RecordStore中保存了用户的设置,不能删除它.efei(爱琴海) 的方法似乎不可行.

当然,用户进行的设置可能会有很多,比如,用户添加了一系列新的电话号码. cuilichen(fjfjfjfj)的方法太局限了.即使通过RecordEnumeration去逐一比对,也不见得知道对应记录中的数据(byte数组)是何意义.

cuilichen 2005-04-10
  • 打赏
  • 举报
回复
另外,可以使用RecordEnumeration类枚举RMS中的所有的record,
之后逐个查看,是不是所需要的。这是常用的方法。
cuilichen 2005-04-10
  • 打赏
  • 举报
回复
public static int getNumOfRecords(String RMSName) {
// 得到name指定的RMS中记录的条数
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(RMSName, true);
return rs.getNumRecords();
} catch (Exception e) {
return 0;
} finally {
try {
if (rs != null)
rs.closeRecordStore();
} catch (Exception e1) {
}
}
}

如果记录的条数大于1。
认为用户设置了密码。
使用TextField,要求用户输入密码,并进行验证。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧