该文章为本站原创,如有引用,请注明出处和作者
纪录管理系统(Record Management System ,简称RMS)。他能使你能够在手机设备的内存中持久地存储数据。
一、 记录管理系统概览
记 录管理系统简单的说就是一个小型的数据库。具有典型的数据库的结构模型。RMS提供了RecordStore类,用于MIDlet应用程序和RMS通信。 RecordStore相当于数据库中的表。我们可以在每个表中,放置若干条记录(Record),每条记录包括两列数据。如下图所示:
存储在RMS中的每个记录存储都和一个MIDlet套件相关联(一个套件就是一个JAR文件,其中可以包括多个MIDlet类)。并且有一个文件名来标识他。
在记录存储中的每一条记录都只有两列表格,其中第一列是一个int型的整数表示纪录的ID,另一列用一个byte型的数组表来记录数据。记录号可以看作是数据表的主键。不管你存储的是字符串或整数,他们都按照byte数组从一条记录读出或写入到一条记录中。
二、深入RecordStore类
在MIDP API 中,通过javax,microedition.rms包来支持RMS。这个包提供一个RecordStore类和几个接口,来支持丢纪录存储的创建和操 作。RecordStore类为单个纪录存储提供了可编程接口,使得对一个记录存储的读写操作变得非常简单。
使用步骤:
1、 打开或者创建一个记录存储。
2、 从纪录存储中读出数据或者向记录存储写入数据。
3、 关闭记录存储。
其中有些最为常用的方法:
openRecordStore()打开一个记录存储,以便读出或写入数据。
getNumRecords()获得纪录存储中记录的数目。
getRecordSize()获得一条记录的数据大小。
getRecord()从一个单独的纪录中获得数据。
addRecord()向一个记录存储添加一条记录的数据。
deleteRecord()删除一条的纪录。
deleteRecordStore()删除整个记录存储。
closeRecordStore()关闭一个记录存储。
在使用记录存储之前,先要创建一个RecordStore对象。示例如下:
RecordStore rs = null ;
打开一个记录存储,可以使用RecordStore对象调用openRecordStore()方法来实现:
try{
rs = RecordStore .openRecordStore(“somename” , false );
}
catch( Exception e){
System.err.println(“Failed opening record store !”) ;
}
openRecordStore 方法的第一个参数就是纪录存储的名字,第二个参数表示当指定名字的纪录存储不存在的话,是否应该创建一个新的记录存储。该参数如果为true,则表示当指 定名字的纪录存储不存在的话可以创建一个新的同名记录存储并打开,false表示仅打开已存在的记录存储,不会创建记录存储。
使用前面创建的记录存储后就可以判断是否已经成功的打开一个记录存储了。
下面我们就可以往打开的记录存储中写入记录了:
try{
rs.addRecord(redordData, 0 , recordData.length);
}
catch ( Exception e ){
System.err.println( “ Failed writhing to record store ! ”);
}
其中addRecord方法中的第一个参数就是包含记录数据的一个byte数组。后两个参数表示数据在数组中的开始位置和写入数据的字节数。上面的例子我们将数组中的所有数据写入了记录存储。
如果知道存储数据的大小,我们可以简单的使用getRecord方法:
byte []tmp = new byte[n] ;
try
{
tmp = rs.getRecord(recordid) ;
}catch(Exception e)
{
}
这里我们只是用了纪录的ID作为参数即可。
如果不知道存储数据的大小就显得麻烦写了。
方法一:
我们可以分配足够大的数组来保存读出的数据如下所示:
byte []tmp = new byte[n] ;
try
{
int len = rs.getRecord(recordid , tmp , 0) ;
}catch(Exception e)
{
}
上面的例子我们使用了三个参数。第一个参数仍然是纪录ID,第二个参数是要存放数据的数组,第三个参数表示从第一位开始读。
如果要删除整个纪录存储的话,我们使用deleteRecordStore方法就可以了,它只需要提供记录存储的名字做参数。示例如下:
try{
RecordStore.deleteRecordStore(“somename”);
}
catch (Exception e){
}
最后在使用完毕,我们要记得使用closeRecordStore方法关闭已经打开的记录存储。
try{
rs.closeRecordStore() ;
}
catch(Exception e){
}
当然这里的内容很简单也不够全面,但对于一个游戏是够了。更详细的内容我们将在后续文章中讲解。