J2ME记录管理存储 - 编程入门网
J2ME记录管理存储时间:2011-04-11 IBM Soma GhoshJ2ME 记录管理系统 J2ME 记录管理系统(RMS)提供了一种机制,通过这种机制,MIDlet 能够持久存储数据 ,并在以后检索数据。在面向记录的方法中,J2ME RMS 由多个 记录存储构成。J2ME RMS 和 MIDlet 接口连接的概貌在图 1 中给出。 图 1. J2ME RMS 和 MIDlet 接口连接的概貌 可以将每个记录存储想像成一个记录集合,它将跨多个 MIDlet 调用持久存在。设备平台 负责在平台正常使用的整个过程(包括重新启动、换电池等)中,尽全力维护 MIDlet 的记 录存储的完整性。 记录存储在与平台相关的位置(比如非易失性设备存储器)创建,这些位置不直接公开给 MIDlet。RMS 类调用特定于平台的本机代码,这种本机代码使用标准 OS 数据管理器函数来 执行实际的数据库操作。 记录存储实现确保所有单个的记录存储操作都是原子的、同步的以及序列化的,因此多个 访问将不会出现数据毁坏。记录存储被盖上时间戳来指示它上次被修改的时间。记录存储还 维护 版本(version),它是一个整数,修改记录存储内容的操作每发生一次,这个数加一 。版本和时间戳对于同步目的很有用。 当 MIDlet 使用多个线程访问一个记录存储时,协调该访问是 MIDlet 的责任;如果它不 能这样做,可能出现无法意料的结果。同样,如果一个平台使用试图同时访问记录存储的多 个线程执行记录存储的同步,那么对 MIDlet 及其同步引擎之间的记录存储实施排外访问是 平台的责任。 记录存储中的每个记录是一个字节数组,并且有唯一的整数标识符。 管理设备数据库 javax.microedition.rms.RecordStore 类代表 RMS 记录存储。它提供了几个方法来管理 以及插入、更新和删除记录存储中的记录。 管理记录存储 要打开一个记录存储,调用 javax.microedition.rms.RecordStore 的 openRecordStore() 方法。 public static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary) 打开具有指定名称 recordStoreName 的记 录存储。如果没有具有这个名称的记录存储,那么调用这个方法来创建一个。 如果记录存储已经打开,这个方法将返回对同一个记录存储对象的引用。 清单 1. 打开一个 RecordStore
一旦所有操作完成,对 closeRecordStore() 的调用将关闭指定名称的记录存储。当一个 记录存储被关闭时,不能进行进一步的操作。 清单 2. 关闭一个 RecordStore
通过调用 deleteRecordStore() 方法可以删除指定名称的记录存储。 清单 3. 删除一个 RecordStore
J2ME记录管理存储(2)时间:2011-04-11 IBM Soma Ghosh插入记录 MIDlet 调用 javax.microedition.rms.RecordStore 类的 addRecord() 方法来将一条新 记录插入到记录存储中。这是阻塞的原子操作,并返回新记录的 recordId 。在这个方法返 回之前,记录被写到持久存储中。 public int addRecord(byte[] data, int offset, int numBytes) 插入一条由字节数组 data 代表的记录,这个数组以 offset 作为它的起始索引, numBytes 作为它的长度。 清单 4. 插入一条记录
更新记录 更新一条特殊记录包括获取这个记录的句柄以及设置新信息。 public int getRecord(int recordId, byte[] buffer, int offset) 返回存储在由 buffer 代表的字节数组中给定记录的数据。 public byte[] getRecord(int recorded) 返 回由 recordId 代表的数据的副本。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |