在J2ME中我们常常需要存储数据,J2ME存储数据的方式不同于web开发中用到数据库。J2ME给我们提供了Record Management System(RMS)及记录存储系统,它非常像web浏览器的Cookie,把数据写在本地的文件,但在MIDP中是没有文件概念的。
J2ME 记录管理系统 (RMS)提供了一种机制,通过这种机制,MIDlet 能够持久存储数据,并在以后检索数据。在面向记录的方法中,J2ME RMS 由多个 记录存储 构成。J2ME RMS 和 MIDlet 接口连接的概貌在图中给出。
每条记录都有一个ID,但是在向某个存储器中添加记录时ID是自动生成的。
对比一下数据库,我们可以这样理解RMS,RMS是本地化数据库,每个Record Store相当于数据库中的一个表,而每一条数据在添加到Record Store中时,默认的ID是自动增长的,这就像数据库表中的自增长主键列。巧合的是在不设置ID的种子和起始值时,RMS的ID和表的起始ID都为1。在一个以应用程序中所有的MIDlet共用这些Record Store,这些Record Store集合起来可以看做是一个数据库,只不过这个数据库能被这个应用程序的MIDlet所引用。
一般情况下我们对数据的操作无非就是增删查改,在J2ME中我们常常运用RMS来进行读写,下面是我写的一个简单的读写例子:
上面有4个方法,StringtoBytes是把字符串转换成字节数组,BytesToString是把字节数组转换成字符串,read和write分别是读和写的方法,RecordStore.openRecordStore()方法就是打开某个RecordStore(相当于打开某个表,然后对这个表进行查询或添加记录,修改等等)。
下面这个类是测试这个RMS类的读写,测试的效果如下: