`
juansusan
  • 浏览: 70809 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

在J2ME中使用记录存储系统(RMS)存储信息

阅读更多
在MIDP中,没有文件的概念,所以永久存储一般只能依靠记录存储系统实现,关于记录存储系统的简介,可以参看教程:

http://www-900.ibm.com/developerWorks/cn/java/j-wi-rms/index.shtml

下面是一些记录存储系统的常用编码介绍:

1、 打开记录集:

打开记录集使用RecordStore里面的静态方法openRecordStore,示例代码如下:

RecordStore rs = RecordStore.openRecordStore(“username”,true);

这样就打开了一个名称为rs的记录集,其中username为记录集的名称,该名称可以根据需要来取,第二个参数代表是否则没有时创建新的记录集,true代表在该记录集不存在时,创建新的记录集,false代表不创建。

如果在打开记录集时,该记录集不存在,则抛出RecordStoreNotFoundException异常,所以检测记录集是否已创建可以使用该异常。

注意:记录集打开以后记得关闭。

2、 向记录集中写入数据

2.1增加数据

向已经打开的记录集中添加数据,需要使用addRecord方法,示例代码:

byte[] bytes = {1,2,3};

int id = rs. addRecord(bytes,0,bytes.length);

该代码将字节数组bytes的全部内容写入到记录集中,该方法的返回值为该信息的id,注意:id从1开始,而不是从0开始。

你可以循环使用该方法向记录集中写入多条数据。

2.2修改数据

修改已经存在的记录集中指定id的数据,需要使用setRecord方法,示例代码:

byte[] bytes = {1,2,3};

rs. setRecord(1,bytes,0,bytes.length);

以上代码的作用是将字节数组bytes的全部内容写入到id为1的记录集rs中。

该操作会覆盖已有的数据。

说明:有些时候,你需要将信息写入到记录集中的第一条记录中,则可以结合以上两个方法,则第一次时向记录集增加数据,以后来进行修改。

3、 从记录集中读出数据

从记录集中读取已有数据,需要使用getRecord方法,示例代码:

byte[] bytes = rs. getRecord(1);

该代码从记录集rs中读取第一条数据,将读取到的数据放在bytes数组中。

在读取数据时,可以获得记录集中id的个数,可以使用getNumRecords方法获得

综合代码为:

int number = rs. getNumRecords();

int id = 1;

if(id >0 && id < number){

byte[] bytes = rs. getRecord(1);

}

4、 从记录集中删除记录

从记录集中删除记录的方法有两种:逻辑删除和物理删除。

逻辑删除是指给删除的记录打标记。

物理删除是指从物理上删除该记录,但是该记录的id不能被重用,也就是说该id不会被继续使用。例如一个记录集中有5个记录,假设你删除了id为3的数据,则剩余记录的id依然为1、2、4、5。这给便历带来了一定的麻烦。

5、 便历记录集

便历记录集,即访问记录集中的所有数据,有两个方法,详见:

http://gceclub.sun.com.cn/NASApp/sme/controller/teclist?tid=0103

6、 其他操作

6.1删除记录集

删除记录集不同于删除记录,需要使用deleteRecordStore方法,示例代码:

RecordStore. deleteRecordStore(“username”);

该代码删除名称为username的记录集。


rms的查询效率
问:我现在初始化一个RecordStroe,里面的信息大概有七百多条吧,查询起来居然至少要跑到十几秒,我使用enumerateRecords,并定义了一个过滤器去查询到一个RecordEnumeration中,是不是方法的效率太底呢,还是rms对一个RecordStore有大小限制的建议,再有个问题就是流中读取的操作如果一次性读到byte[]中去的时候,文件太大会发生内存溢出,所以想对流操作实现逐快读取,最好是行的整数倍分块,将其读到内存中,再行操作,这样完成整个流的读取,但苦于没什么头绪,希望大大们不吝赐教,呵呵
答:1.关于速度慢的情况是会有的,如果超过50条的数据RMS的读取就会出现慢的问题了(真机),我想你的十多秒是在模拟器上面的吧?  
  2.读取数据流,你读的数据流有多大?内存问题就要根据机型来分了。就算你分开来读也会出现内存的问题。在内存里有没有图片存在?图片是最大的内存。在W800(索尼爱立信W800c)上我试过读10M的文件也可以。  

分享到:
评论

相关推荐

    J2ME中RMS存储工具使用解析

    J2ME中RMS存储工具使用解析,希望对大家有用!

    J2me保存记录框架(封装RMS)

    共享J2me新手入门资料,封装好的RMS类,保存数据参考

    探索J2ME:使用记录管理系统

    如果你已经从头开始学习这一...在本文中,我们将通过MIDP的记录管理系统(RMS)来为ExpensesApp MIDlet组件创建一个记录存储器来解决上述问题。我们将会把ExpensesApp增强到记录库的程度,这将使得该应用程序是有用的。

    J2ME 记录管理存储

    J2ME java rms 记录管理存储的相关内容

    用j2me写的电话簿程序,利用rms存储联系人信息

    自己写的电话簿程序,用j2me写的。rms永久存储。能增加,删除,修改,查询。

    RMS的使用解析

    RMS即Record Manager System,在手机应用中常常作为得分记录、游戏信息存储等的工具使用。 RMS的使用可以分为两个部分:一、单一记录的构造;二、RecordStore的使用和操作。下面就这两方面进行详细说明。

    关于J2ME中RMS的使用解析

    在J2ME中,RMS作为唯一的永久性存储工具,其重要性是不言而喻的。 来自移动开发网 一个很不错的心的,揭开一头雾水

    J2ME_rms数据存储详解

    是一个word文档,详细介绍了J2ME中如何进行数据的存储

    J2me存储和连接详解

    J2me RMS存储 网络连接 详解 PDF文档 自制目录

    j2me移动应用程序开发教程

    示例应用程序使用 Java 2 Platform, Micro Edition (J2ME) record management system (J2ME RMS) 存储订单信息,用一个 MIDlet 执行必要的创建及访问数据库应用程序的逻辑。介绍如何使用 J2ME RMS、打造 MIDlet、并...

    javaMe信息存储

    记录管理系统通过记录管理器来实现信息存储,记录存储器类似数据库系统中的表,可包含多条记录,每条信息在RMS中表现为一条记录,一条记录可以包含一个数据,也可以包含多个数据,这些数据类型可以相同,也可以不同...

    JAVA基于J2ME的手机游戏开发(论文+源代码)

    2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP库中的类 3 2.4 J2ME API简介 4 2.4.1 MIDP API概述 4 2.4.2 MIDlet应用程序 4 2.4.3 使用定时器 5 2.4.4 网络 6 ...

    J2ME手机备忘录源代码

    MVC模式开发的J2ME程序源代码,用RMS存储方式,支持关键字查询,日期查询等功能

    j2me手机数据库 手机应用程序

    用j2me做的手机数据库 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.rms.*; import java.io.*; import java.util.*; //公司员工类 public class record...

    基于J2ME的手机游戏开发

    2.3 移动信息设备简表概述 2.3.1 MIDP的目标硬件环境 2.3.2 MIDP应用程序 2.3.3 CLDC和MIDP库中的类 2.4 J2ME API简介 2.4.1 MIDP API概述 2.4.2 MIDlet应用程序 2.4.3 使用定时器 2.4.4 网络 2.4.5 使用...

    J2ME俄罗斯方块游戏

    自己原创 J2ME 俄罗斯方块游戏,用到了rms存储,记录积分榜。功能齐全。

    J2ME贪吃蛇游戏论文

    第三节 移动信息设备简表概述 2 一、MIDP的目标硬件环境 3 二、MIDP应用程序 3 三、CLDC和MIDP库中的类 3 第四节 J2ME API简介 3 一、MIDP API概述 3 二、MIDlet应用程序 4 三、使用定时器 5 四、网络 6 五、使用...

    BlackBerry 应用和MIDlet之间的交互

    以使用RMS 创建一个或多个记录存储,每个由一个独一无二的名字标识。在 javax.microedition.rms 包中可以找到必要的类和接口。Record Store 提供了打开,关闭,读取,写 入和更新操作,也提供方法删除单个记录或者...

    j2me保存永久数据

    移动平台开发,数据库RMS编程 记录管理系统(RMS)实际上是一种小型的数据库系统。 与数据库系统中的“表”相对应,要RMS中存放数据是Record Store(记录表)。

    JAVA基于J2ME的手机游戏开发吞吃蛇小游戏(论文+源代码)

    2.3 移动信息设备简表概述 3 2.3.1 MIDP的目标硬件环境 3 2.3.2 MIDP应用程序 3 2.3.3 CLDC和MIDP库中的类 3 2.4 J2ME API简介 4 2.4.1 MIDP API概述 4 2.4.2 MIDlet应用程序 4 2.4.3 使用定时器 5 2.4.4 网络 6 ...

Global site tag (gtag.js) - Google Analytics