详解RMS系统 电脑资料_第1页
详解RMS系统 电脑资料_第2页
详解RMS系统 电脑资料_第3页
详解RMS系统 电脑资料_第4页
详解RMS系统 电脑资料_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

详解RMS系统 电脑资料 RMS(Record Management System)是MIDP中一个非常重要的子系统,因为它是J2ME应用程序进行持久性存储的唯一途径, 五个问题 1,什么是持久性存储 持久性存储简单的理解就是数据不因为程序的退出而丢失,一般我们在程序中声明的变量都是存储在stack或者heap上的,程序退出后这些数据会被清除以释放资源。而存储在RMS中的数据是不会被清除的。 2,RMS中按照Record来存储的,ID是不是等于索引 ID和索引的区别还是很大的,ID从1开始计数,这和数组的0开始计数有一些不同。ID可以是不连续的,当一个ID标记的Record被删除后那么对应的ID也就变得无效了。ID是不能重复使用的。 3,RMS对存储数据格式没有具体的要求 只要数据可以被转换成byte那么这个数据就可以存储在RMS中,取出的时候仍然是byte。因此这就要求我们开发人员来描绘数据的样子,因为RMS只是负责把数据按照byte写入和读出。 4,一个MIDlet套件中的RecordStore可以被另外一个RecordStore 在MIDP1.0中不可以,在MIDP2.0中推出了共享机制,通过共享可以实现 5,命名规则 长度不超过32位的Unicode字符,大小写敏感且在MIDlet套件里面是唯一的。 具体使用使用 1, 首先应该清楚RecordStore就相当于一个数据库,你必须新建一个这样的数据库才可以开始使用RMS进行存储读取数据。新建RecordStore非常简单,可以使用下面的静态方法static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary) 注意,后面的boolean类型的createIfNecessary表示,如果标记为true的时候,那么RecordStore不存在就创建它。关闭RecordStore使用closeRecordStore()。在RMS中另外一个重要的概念就是Record,这就像数据库中一行一行的数据一样。下面我们首先对RecordStore中的方法进行区分,有些是用来获得RecordStore信息的有些则是用来获得Record信息的。 (1),获得RecordStore信息 int getVersion() int getSize() String getName() long getLastModified() (2),获得Record信息 int getNumRecords() int getNextRecordID() int getRecordSize(int recordId) 2,对Record进行添加、修改、读取和删除。 (1),读取记录 byte getRecord(int recordId) int getRecord(int recordId, byte buffer, int offset) (2),添加记录 int addRecord(byte data, int offset, int numBytes) (3),更新记录 setRecord(int recordId, byte newData, int offset, int numBytes) (4),删除记录 deleteRecord(int recordId) 3, 前面我们提到了ID和Index是不同的,因为ID可能不连续,那么我们如何来遍历数据呢?很多人可能会想到使用for循环,但是由于id可能不连续,那么这个结果是无法预测的, RecordEnumeration enumerateRecords(RecordFilter filter, RecordComparator parator, boolean keepUpdated) 在这个方法中还包括了RMS中的另外两个接口RecordFilter和RecordComparator,他们是用来量身定制遍历的结果集的,你可以实现RecordFilter来决定要把什么样的数据筛选出来,通过实现RecordComparator来决定数据的排序。最后的参数keepUpdated,如果设置为true的话,那么它会跟踪RecordStore中的数据变化,并且会反映到我们列出的结果集中,要知道这是非常好费资源的操作,建议设置为false。RecordEnumeration相当于一个双向的数据链表。你可以通过调用nextRecordId()和previousRecordId()来不停的移动。 4, 创建可以被共享的RecordStore 我们可以通过下面的方法来实现,必须要把authmode设置为AUTHMODE_ANY。 static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary, int authmode, boolean writable) 访问RecordStore 如果另外一个MIDlet Suite中的MIDlet想访问的话,那么它需要知道要访问的MIDlet suite的vendorName和suiteName,一般我们可以从jad文件中得到这两个数据。我么使用如下的方法, static RecordStore openRecordStore(String recordStoreName, String vendorName, String suiteName) 设计rms存储库(对底层方法的封装) 其实,midp已经提供了基本的操作,我们完全可以不做任何事情也照样可以实现我们的存储要求,但是,在实际开发中要是我们每遇到不同的存储数据都要我们通过流的形式来write和read的话,确实很不方便,也就是复用性太差了。所以在实际的开发中可能需要根据实际情况来封装一下底层的接口。 刚才已经说过,rms对数据格式是没有要求的,前提是你把所有的数据转化为byte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论