探究J2ME记录管理系统使用


  本文标签:J2ME RMS

  本文向大家简单介绍一下谈谈J2ME的功能,重点讨论一下持久数据和记录管理系统的使用,MIDP提供在移动设备上存储持久数据的支持,并且MID简表还特意规定兼容的移动设备必须提供至少8KB的非动态内存用于数据存储的用途,实事上,大多数的MIDPJava设备提供的空间比这要求多得多  。

  持久数据和记录管理系统(RecordManagementSystem,简称RMS)

  我在前面的文章中曾经提到过,MIDP提供在移动设备上存储持久数据的支持,并且MID简表还特意规定兼容的移动设备必须提供至少8KB的非动态内存用于数据存储的用途,实事上,大多数的MIDPJava设备提供的空间比这要求多得多  。这就允许一个midlet充份利用应用程序的持久数据  。对于有Java2标准版开发经验的开发者,应该注意这种数据存储能力与标准的Java有区别  。J2ME记录管理系统(RMS)允许数据流被储存并且在一个记录基础上访问数据  。由应用程序开发者把每个记录解析到字段水平  。RMS程序包内部的接口支持一个应用程序定义的基础上的比较与检索功能  。

  一、javax.microedition.rms程序包

  通过javax.microedition.rms包访问J2ME记录管理系统,这个包包括一个类,RecordStore,和好几个有用的接口(在下列表格中描述):

  这些接口对于实现自定义搜索和检索功能很有用,这些接口中使用的最多的就是RecordEnumeration  。这个接口从RecordStore.enumerateRecords()方法调用中返回并且被用于遍历一组从记录存储器中返回的记录  。它包含nextRecord()、previousRecord()、numRecords()和hasNextElement()等方法  。

  二、使用RecordStore类访问记录存储

  RecordStore类是开发者开发基层RMS的接口,记录储存是在一个平台--midlet环境依赖的方式--上创建的  。信息的实际的位置和存储细节应用程序开发者其实并不知道,记录存储可以使用一种简单的命名规则来访问:名称最多可以到32个Unicode字符长度,区分大小写和必须在一个midlet套件内唯一  。在一个midlet套件内的所有midlet都有读/写一个记录存储的权限,只要它们知道正确的名称  。一旦这个midlet套件被从该设备上删除,所有与这个套件关联的记录存储也将被删除  。

  比如说,为了打开一个名为TestRecordSet的记录存储,你可以调用RecordStore.openRecordStore()方法  。这个方法使用两个参数:一个字符串,表示记录存储的名称;一个布尔值,如果为真的话,就会在纪录存储不存在时创建一个  。我们使下列方法调用创建新的TestRecordSet记录存储:

  1. RecordStorers=null;  
  2.  
  3. rs=RecordStore.openRecordStore("TestRecordSet",true);  
  4.  

  记录存储被创建好后,我们可以通过调用RecordStore.addRecord()方法来向这个记录存储添加数据  。addRecord()接受三个参数:

  一旦成功完成addRecord()调用,这个方法就返回一个整数指定这个记录在记录存储中的标识号  。RecordStore还规定另外一个数据编辑方法,包括setRecord()和deleteRecord(),但是我在例子中不会使用它们  。

  在MID简表中包含网络功能是有前瞻性的,使J2ME成为未来无线电应用开发的领导  。这个功能将是人工智能技术的基础,使J2ME成为未来技术的基石(例如,你可以使用HTTPConnection接口和XML分析器构造一个WML浏览器)  。事实上,象kXML这样的XML分析器将允许J2ME客户端支持SOAP、XML-RPC和其他基于XML的分布技术  。