在RMS中存储和读取数据
2008-01-05 08:50:13 来源:WEB开发网■ 引言
在上讲中,我们熟悉到汲取音乐播放的专长,能够制作成拥有BGM和音效、表现力丰富的应用程序。在本讲中,我们主要就应用程序本身内部保持的数据保存、读取进行具体阐述。
■ 数据的保存读取
RMS:
要在应用程序中保存用户设定和高分等相关信息,所以必须在手机终端上的记忆中保存数据。MIDP上定义了称之为RMS(Record Management System)的数据库系统。RMS中有称为“Record store”的列表,其中存在名为Record 的entry。Record按照字节排列,用id可以识别。利用下面的类、接口可以操作Record Store和Record。
类、接口名 作用 RecordStore 表示Record Store的类 RecordEnumeration 列举Record的接口 RecordComparator 定义Record comparator的接口 RecordFilter 定义Record过滤的接口 RecordListener 监视Record Store变更的接口表 1
RecordStore
表示Record Store的是Record Store类。Record Store是用RecordStore 中的static方法的open Record Store制作的。
RecordStore.openRecordStore("RecordStoreName", true);
第2个自变量转化成“true”后,名为“Record Store Name”的Record Store存在的情况下,能够打开保存的Record Store。但是,名为“Record Store Name”的Record Store不存在的情况下,则会制作新的Record Store,并打开所制作的Record Store 。
第2个自变量转化成“false”后,名为“Record Store Name”的Record Store存在的情况下,能够打开保存的Record Store。但,不存在的情况下,则放弃Record Store Not Found Exception。
操作Record Store时,应该在操作前打开Record Store,并在操作完后关闭Record Store。利用刚刚介绍的Record Store的static方法——open Record Store打开Record Store。利用Record Store的引证方法的close Record Store按照下面的叙述可以关闭Record Store。在这儿将关闭的Record Store 例子表示为rs。
rs.closeRecordStore();
以下是表示针对 Record Store 的连贯操作。(ex. 1)
RecordStore rs = null;try{
// 打开Record Store
rs = RecordStore.openRecordStore("RecordStoreName",true);
记述针对Record Store的操作
?
?
}catch(Exception e){
}finally{
if(rs != null){
try{
// 关闭Record Store
rs.closeRecordStore();
}catch(Exception e){
}
}
}
ex. 1
按照下面所述的Record Store的static方法清除Record Store。
RecordStore.deleteRecordStore("RecordStoreName");
RMS的限制
RMS是非常单纯的数据库系统,所以只需预备最小限度的操作。因此,一般数据库系统所具有的处理控制和系统故障的恢复功能,在RMS上是不能被支持的。
Record操作
增加Record
利用以下Record Store类的方法增加Record 。
int addRecord(byte[] data,int offset, int numBytes)
在data中指定希望保存的数据字节排列、在offset中指定数据显示排列中的数据开始位置、在numBytes中指定保存数据的字节数。能在numBytes中指定0。此时,null被收藏在Record中。另外,增加数据的Record的id作为返还值返还。
清除Record
利用以下方法清除Record 。
void deleteRecord(int recordId)
指定用recordId清除Record中的id。对应的Record不存在的情况下,放弃例外。而且,清除后的RecordrecordId也不能再次利用。
更改Record
利用以下方法更改Record 。
void setRecord(int recordId, byte[] newData, int offSet, int numBytes)
指定recordId中更改的Record,并在newData中指定新收藏的数据字节排列。对应的Record不存在的情况下,放弃例外。
获取Record
利用下面的方法获取Record。
int getRecord(int recordId, byte[] buffer, int offset)
byte[] getRecord(int recordId)
上述方法是指,从offset的位置上复制recordId方法指定的Record内容到buffer字节排列。返还值是所复制的数据的字节数。
下面的方法是指,recordId所指定的Record内容作为返还值返还。
Record Store的信息
利用如下方法可以获得Record Store操作和Record 操作之外的Record Store信息。
方法 功能 public int getLastModified() 用long获取最后的修改时刻。用System.currentTimeMillis()形成能够取得的形式相同的形式。 public int getNextRecordID() 获取下一个recordId public int getNumRecords() 获取Record Store中的Record 数。 public int getVersion() 获取Record Store的版本编号。版本编号通常在每次修改完Record Store后都会自动加1。 public int getSizeAvailable() 获取Record Store的容许量。 public int getSize() 获取Record Store的占有字节数。 public static String[] listRecordStores() 全部获取Record Store名。表 2
更多精彩
赞助商链接