初识RMS(Record Management System)

转载自http://kenter1643.iteye.com/blog/109080

初识RMS(Record Management System)

关键字: RMS

记得曾经有人说,数据库程序员是世界上最不愁找不到工作的职业了。虽然此话无从考究J,不过也从一个方面说明了不论开发什么类型的应用,数据库几乎是一个永恒的话题!在java的体系结构里,我们现在已经有了JDBC这个技术,还有许多就此衍生的概念,许多耳熟能详的术语,EJB, JDO等等,只是,这些都是针对桌面平台或者企业用户的,对于处理能力和存储空间都十分有限的无线设备而言,必须有一种特殊的机制与之适应,MIDP2.0规范里不支持全面的树型文件系统,但为我们提供了这样一种数据持久化机制——记录管理系统(Record Management System RMS)

 

记录管理系统就是一个小型的数据库管理系统,它以一种简单的,类似表格的形式组织信息,并存储起来形成持久化存储,以供应用程序在重新启动后继续使用。

 

RMS提供了Records(记录)Records Stores(记录仓储)两个概念。

 

记录仓储(Records Stores)类似于一般关系数据库系统中的表格(TABLE),它代表了一组记录的集合。在相同MIDlet Suite中,每个仓储都拥有自己独一无二的名字,大小不能超过32Unicode字符,同一个Suite下的MIDlet都可以共享这些记录仓储。

 

记录是记录仓储的组成元素。记录仓储中含有很多条记录,就如同记录表格是由一行行组成的一样。每条记录代表了一条数据信息。一条记录(Record)由一个整型的RecordID与一个代表数据的byte[]数组两个子元素组成。RecordID是每条记录的唯一标志符,利用这个标志符可以用于从记录仓储中找到对应的一条记录。请注意,由于产生记录号RecordID使用的是一种简单的单增算法。当一条数据记录被分配的时候,它的记录号也就唯一分配了。并且该条记录被删除后,RecordID也不会被使用。所以,仓储中相邻的记录并不一定会有连续的RecordID

 

MIDP Suite所使用的RMS空间图可由下图所示:

 

每一个MIDlet Suite都会有属于自己的一个用于RMS的私有空间。可以通过jad描述文件事先规定Midlet Suite运行所必需的RMS空间大小,在手机内部存储空间中预存的一个空间,供由jad指定的jar包文件使用。在MIDP 2.0 以后,只要MIDlet开放了属于自己RMS空间的相应RecordStore的使用权限,那么这个RecordStore可以被Suite外部的其他MIDlet访问。

   

所有与RMS相关的API都集中在javax.microedition.rms包下,包括了一个主类,四个接口,以及五个可能的被抛出异常。既然RMS在结构上就分为记录与记录仓储两个部分,那么对他们的操作当然也是有所区别的,下一小节“RecordStore的管理”将首先阐述记录仓储的自身操作。

5.2    RecordStore的管理

5.2.1   RecordStore的打开

当你查阅MIDP API文档的时候,你将略为惊讶的发现,RecordStore并不能通过new来打开或创建一个实例。事实上, RecordStore提供了一组静态方法openRecordStore()来取得实例。这里,你有三个选择:

 

openRecordStore (String recordStoreName, boolean createIfNecessary)

openRecordStore (String recordStoreName, boolean createIfNecessary

int authmode), boolean writable))

openRecordStore (String recordStoreName, String vendorName, String suiteName)

 

显然,最复杂(当然,也是最灵活的),是第二种开启方法。它的第一个参数是记录仓储的名称,第二个参数表明了当我们请求的仓储不存在时,是否新建一个Record Store;第三个参数表明了此仓储的读取权限,最后一个参数则决定了写入权限。

 

当我们使用第一个开启方法时,则表示我们选择读取权限只限于本地,并且拒绝其他MIDlet写数据到这个记录仓储上。即相当于使用第二种开启方法并分别为第三第四个参数传入了RecordStore.AUTHMODE_PRIVATEfalse

 

最后,MIDP API中还提供了一个专门用来读取其他MIDlet Suite记录仓储的开启方法;它的3个传入参数分别为记录仓储名,发布商名以及MIDlet Suite套件名。请注意,如果该记录仓储的读取权限为AUTHMODE_PRIVATE的话,此方法将返回安全错误。

 

下面,我们给出一个使用第一种方法的示例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值