import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.InvalidRecordIDException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;
// RMS RescordManagement System 记录管理系统--是一种数据持久化机制
// RMS 就是一个小型的数据管理系统
// 特点:以简单的,类似表格的形式组织信息,并存储起来形成持久化存储,以供
// 应用程序在重新启动后继续使用!
// 概念: Records--记录
// Records Stores--记录仓储
// Records Stores :代表一组记录的集合;同一MIDlet ,每个仓储的名字是独一无二的 ;大小<32个Unicode字符
// 同一个MIDlet 可以共享这些记录仓储
// Record : 一条记录的组成:整型的RecordID ,代表数据的byte[] 组成
// RecordID: 每条记录的唯一标示;特点:RecordID 是每条记录的唯一标识,使用的是简单的单增算法,
// 对应的记录被删除后RecordID ,不会被使用,仓储中相邻的记录并不一定会有连续的ID
// 示例:RecordStroe 的管理 -
public class RMSTest extends MIDlet implements RecordComparator{
private RecordStore rs ;
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
try {
//RMS 的关闭:MIDlet 套件需要在RMS 的开启与关闭之间保持平衡
// 特点:打开了多少个仓储 , 就要有多少个关闭的方法
rs.closeRecordStore();
//delete RecordStore
//删除之前必须保证记录仓储是关闭的状态
RecordStore.deleteRecordStore("myRecordStore");
} catch (RecordStoreNotOpenException e) {
e.printStackTrace();
} catch (RecordStoreException e) {
e.printStackTrace();
}
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
//start application
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
try {
//RecordStore 通过静态方法来获取对象
// 参数:1、记录仓储名称 2、不存在时是否创建
//打开一个 RMS , 打开失败则创建
rs = RecordStore.openRecordStore("myRecordStore", true);
//添加记录
int id = addRecord("zhang张");
System.out.println("数据的记录ID 为:"+id);
//获取记录
System.out.println(getRecord(id));
//RecordStore 的方法,获取记录仓储的信息
System.out.println("记录仓储最后更新的时间是:"+rs.getLastModified());
System.out.println("获取已经打开了的记录仓储的名称:"+rs.getName());
System.out.println("获取当前记录仓储中记录的总数:"+rs.getNumRecords());
System.out.println("获取当前仓储中可用的字节数:"+rs.getSizeAvailable());
System.out.println("获取记录仓储的版本号:"+rs.getVersion());
System.out.println("获取该MIDlet套件中所有的记录仓储列表:"+rs.listRecordStores());
this.viewAll();
} catch (RecordStoreFullException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//增加记录
//RecordStore 的基本操作:
// addRecord(byte[] data,int offset,int numBytes),参数:byte[]数组,传入数组的起始位置,传入数据长度
// addRecord(); 当数据添加成功后,方法将返回记录ID号,RecordID----简单增长
public int addRecord(String source){
int rec = -1; //初始化状态
//创建字节数组输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//创建数据输出流 --传入字节数组输出流对象
DataOutputStream dos = new DataOutputStream(baos);
try {
//写入数据
dos.writeUTF(source);
//关闭流
dos.close();
baos.close();
//获取byte 数组
byte[] bytes = baos.toByteArray();
System.out.println("bytes的数量为:"+bytes.length);
//添加记录
rec = rs.addRecord(bytes,0, bytes.length);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rec;
}
//获取数据
public String getRecord(int RecordID){
String record = "";
byte[] data;
try {
//通过记录ID 获取字节数组
data = rs.getRecord(RecordID);
//读出,获取数据
ByteArrayInputStream bais = new ByteArrayInputStream(data);
DataInputStream dis = new DataInputStream(bais);
record = dis.readUTF();
//关闭流
dis.close();
bais.close();
} catch (RecordStoreNotOpenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidRecordIDException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
return record;
}
//RecordStore 的高级部分
// 接口的使用:四个接口:RecordComparator,RecordEnumeration,RecordFilter ,RecordListener
//RecordEnumeration 遍历接口--可靠的走访方式
//案例:获取仓储中所有的单词
public String[] viewAll(){
System.out.println("欢迎进入RecordEnumeration遍历接口的测试.......");
String[] words = new String[0];
RecordEnumeration re = null;
//rs 记录仓储对象
if(rs==null){
return words;
}
try {
re = rs.enumerateRecords(null, null, false);
//re.numRecords(); 返回在当前遍历中可用的集合,也满足filter存在的时候
int recordSum = re.nextRecord().length;
System.out.println("当前集合中可用的记录数目为:"+recordSum);
words = new String[recordSum];
int wordRecords = 0;
while(re.hasNextElement()){ //hasNextElement(); 指定当前指向的位置还有没有记录
System.out.println("下一位置的记录拷贝为:"+re.nextRecord());
byte[] temp = re.nextRecord(); //re.nextRecord(); 返回遍历器中下一位置的记录拷贝(修改不影响记录仓储中的值);
System.out.println(temp);
// words[wordRecords] =temp[wordRecords] ;
wordRecords++;
}
} catch (RecordStoreNotOpenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
return words;
}
//RecordFilter 过滤接口
//过滤接口是用来过滤不满足条件的记录
//RecordComparator 比较器接口
public int compare(byte[] rec1, byte[] rec2) { //RecordComparator 必须实现的方法:
// TODO Auto-generated method stub
return 0;
}
//RecordListener 接口
// 用来接受监听记录仓储中记录添加,更改或删除记录事件的接口
//必须实现的方法:recordAdded();recordChanged();recordDeleted(); --都需要传入两个参数:仓储名,记录id
//注:RecordListener 是在对记录仓储的操作动作完成以后被调用的!
}
分享到:
相关推荐
在这个"j2me RMS记录管理系统 备忘录"项目中,开发者创建了一个备忘录应用,用户可以添加、查看、编辑和删除他们的备忘事项。 1. **Prj3.jar**:这是一个编译后的Java应用程序档案,包含了整个项目的所有类文件和...
### RMS管理数据系统的深入解析 #### 一、RMS系统概述 Record Management System(RMS)是一种用于管理数据的小型数据库系统,它被广泛应用于Java Micro Edition (J2ME)平台上的Mobile Information Device Profile ...
FESTOC-RMS智能试剂管理系统是一款专为实验室设计的智能化管理工具,由常州进出口工业及消费品安全检测中心(DPTC)开发并推广。DPTC作为国内领先的检测中心,其下属的三个重点实验室在试剂管理、现场管理和信息化...
【RMS记录管理系统】 Record Management System(RMS)是JavaME中的本地存储系统,允许应用程序在设备上存储和管理数据。RMS的操作包括创建数据库、添加、修改和删除记录,以及监听记录变化。通过RMS,开发者可以...
如果你已经从头开始学习这一...在本文中,我们将通过MIDP的记录管理系统(RMS)来为ExpensesApp MIDlet组件创建一个记录存储器来解决上述问题。我们将会把ExpensesApp增强到记录库的程度,这将使得该应用程序是有用的。
《基于VFP的学生管理系统——RMS.rar教学解析》 在信息技术日益发达的今天,教育行业的信息化管理也变得越来越重要。本文将围绕“RMS.rar_vfp_学生管理_教学管理系统”这一主题,深入探讨其中的核心知识点,即如何...
RMS(Revenue Management System,收益管理系统)便是这样的一个核心工具,它集成了预订、入住、退房、账单管理等多种功能,实现了酒店业务的自动化处理。本篇将详细介绍一个基于C++6.0编程语言和SQL Server数据库的...
2. **记录管理**: 记录是存储在RecordStore中的数据单元,可以是任何Java对象,但通常会序列化为字节数组。开发者可以添加、删除和更新记录。 3. **读写操作**: RMS提供了流式接口来读取和写入记录。可以使用`...
RMS,全称为Resource Management System(资源管理系统),在IT领域中,它通常指的是J2ME(Java 2 Micro Edition)平台上的一个标准组件,用于在移动设备上管理和存储数据。这个"RMS.rar_rms"可能是一个包含了RMS...
### ADRMS安装部署系统设置详解 #### 一、前言 本文档旨在提供一份详细的ADRMS(Active Directory Rights Management Services)安装与部署指南。通过本指南,读者将能够了解到ADRMS系统的整体架构、各组成部分的...
《RMS数据管理程序设计》文档主要探讨了Java ME(J2ME)环境中移动设备上的数据存储机制,尤其是MIDP(Mobile Information Device Profile)的记录管理系统(Record Management System,简称RMS)。RMS为小型设备...
Java RMS(Record Management System)是Java ME(Micro Edition)平台上的一个数据存储系统,主要用于在移动设备上进行轻量级的数据管理。RMS提供了一种简单的方法来存储和检索应用程序的数据,例如用户设置、游戏...
RMS,全称为“Rights Management Services”,即微软的权利管理服务,它是一种安全技术,用于控制对敏感信息的访问和使用。在某些情况下,用户可能需要完全卸载并删除RMS系统,比如进行升级、迁移至新的平台或者不再...
在J2ME中,RMS(Record Management System)是一个小型的数据库管理系统,专门设计用于在资源有限的设备如手机上进行数据存储和持久化。RMS提供了简单且高效的数据管理方式,适用于那些无法使用全功能数据库系统的...
1. **RMS (Record Management System)**:在J2ME中,RMS(记录管理系统)是存储数据的主要方式。RMS提供了一种在移动设备上持久化数据的方法,类似于关系数据库中的表。RMS.java可能包含了创建、读取、更新和删除...
3. **审计跟踪**: RMS提供了详细的日志记录,可以追踪文件的访问和使用情况。 4. **跨组织协作**: RMS支持与其他RMS系统集成,使得不同组织间的协作也能保障数据安全。 **五、RMS的挑战与注意事项** 1. **兼容性...
下面将详细介绍如何使用 RMS 框架来保存记录以及封装 RMS 类的方法。 1. **RMS 概述** RMS 提供了一组接口和类,使得开发者可以在 J2ME 应用程序中创建、读取、更新和删除数据记录。主要的类包括 `RecordStore` 和...
RMS2000全称为“Real-time Monitoring and Supervisory System 2000”,是一款实时监控与管理系统,主要应用于制造业、能源、化工等行业的自动化过程控制。其核心特点包括: 1. **实时性**:RMS2000具备强大的实时...
通常,这样的工具会包含各种诊断和清理工具,以及可能的日志分析功能,以便于管理员识别问题、优化性能,并确保RMS系统的合规性。 总的来说,这个adRms检查工具是一个方便的实用程序,对于管理和维护使用AD RMS和...