rms是首先在midp1.0中提出的,它所在的包是javax.microedition.rms,在这个包里面总共包括四个接口、一个类和五个异常。由此可见rms设计的非常小巧,这正是为了满足移动信息设备资源受限的需求。下面我们先弄清楚几个概念。
上面以7个问题的形势总结了rms中需要注意的基本概念,下面我们看看如何使用rms。一般初学者学习rms的时候通常会被他们的方法给弄的不知如何下手,因为很多方法看上去很类似。这里我进行如下的总结,提供一些使用指南给大家。
首先读者应该清楚recordstore就相当于一个数据库,你必须新建一个这样的数据库才可以开始使用rms进行存储读取数据。新建recordstore非常简单,可以使用下面的静态方法。
static recordstore openrecordstore(string recordstorename, boolean createifnecessary)
注意recordstorename应该是长度不超过32位的unicode字符,大小写敏感且在midlet套件里面是唯一的,后面的boolean类型的createifnecessary表示,如果标记为true的时候,那么recordstore不存在就创建它。关闭recordstore使用closerecordstore()。在rms中另外一个重要的概念就是record,这就像数据库中一行一行的数据一样。下面我们首先对recordstore中的方法进行区分,有些是用来获得recordstore信息的有些则是用来获得record信息的。
下面讲述如何对record进行操作,主要包括添加、修改、读取和删除。
前面我们提到了id和index是不同的,因为id可能不连续,那么我们如何来遍历数据呢?很多人可能会想到使用for循环,但是由于id可能不连续,那么这个结果是无法预测的。程序很可能会失败。正是由于这样的原因,在rms中提供了一个重要的接口recordenumeration。它可以遍历recordstore中的数据。我们看看下面的方法。
recordenumeration enumeraterecords(recordfilter filter, recordcomparator comparator, boolean keepupdated)
在这个方法中还包括了rms中的另外两个接口recordfilter和recordcomparator,他们是用来量身定制遍历的结果集的,你可以实现recordfilter来决定要把什么样的数据筛选出来,通过实现recordcomparator来决定数据的排序。最后的参数keepupdated,如果设置为true的话,那么它会跟踪recordstore中的数据变化,并且会反映到我们列出的结果集中,要知道这是非常好费资源的操作,建议设置为false。recordenumeration相当于一个双向的数据链表。你可以通过调用nextrecordid()和previousrecordid()来不停的移动。关于recordenumeration的其他方法读者可以参考java doc进行学习。
最后一点需要说明的就是共享机制,这是在midp2.0中提供的新特性。允许一个套件中的recordstore被另外一个访问,当然这是要在授权的模式下。首先我们看看原理图
如果midlet suite1在创建recordstore1的时候,授权模式为authmode_any的话,那么其他的套件就有可能访问到recordstore1,比如上图中的midlet suite2。通常这样的访问通过两个步骤来完成。
本文的主要目的是介绍rms的基本概念以及为读者提供如何使用rms中的方法提供一些指导。想进一步研究rms,读者可以参考源码下载专区笔者提供的一个基于midp1.0实现的手机通信录。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器