`

面向对象的RMS操作

    博客分类:
  • j2me
DOS 
阅读更多
将需要保存的数据集中起来形成一个model类,并且要实现序列化,比如:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class LoginInfo{
	String name;
	String passowrd;
	boolean selected;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassowrd() {
		return passowrd;
	}
	public void setPassowrd(String passowrd) {
		this.passowrd = passowrd;
	}
	public boolean isSelected() {
		return selected;
	}
	public void setSelected(boolean selected) {
		this.selected = selected;
	}
	
	public byte[] serialize(){
		ByteArrayOutputStream bos=null;
		DataOutputStream dos=null;
		try {
			bos=new ByteArrayOutputStream();
			dos=new DataOutputStream(bos);
			dos.writeUTF(this.getName());
			dos.writeUTF(this.getPassowrd());
			dos.writeBoolean(this.isSelected());
			dos.flush();
			return bos.toByteArray();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(dos!=null)
					dos.close();
				if(bos!=null)
					bos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}
	
	public LoginInfo deserialize(byte[] data){
		LoginInfo instance=new LoginInfo();
		ByteArrayInputStream bis=new ByteArrayInputStream(data);
		DataInputStream dis=new DataInputStream(bis);
		try {
			instance.setName(dis.readUTF());
			instance.setPassowrd(dis.readUTF());
			instance.setSelected(dis.readBoolean());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(dis!=null)
					dis.close();
				if(bis!=null)
					bis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return instance;
	}
	
}


操作RMS类
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;

public class RmsLoginInfo {
	static String rmsName="loginInfo";
	public void writeRecordStore(LoginInfo loginInfo){
		try {
			RecordStore rs=RecordStore.openRecordStore(rmsName,true);
			byte[] data=loginInfo.serialize();
			if(rs.getNumRecords()==0)
				rs.addRecord(data,0,data.length);
			else
				rs.setRecord(1,data,0,data.length);
			rs.closeRecordStore();
//			System.out.println("保存成功");
		} 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();
		}
	}
	public LoginInfo readRecordStore(){
		LoginInfo loginInfo=new LoginInfo();
		try {
			RecordStore rs=RecordStore.openRecordStore(rmsName,true);
			if(rs.getNumRecords()==0){
//				System.out.println("没有记录");
				rs.closeRecordStore();
				return null;
			}else{
				byte[] data=rs.getRecord(1);
				rs.closeRecordStore();
				return loginInfo.deserialize(data);;
			}
		} 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();
		}
		return null;
	}
	// 删除表
	public static void deleteRecordStore(){
		try {
//			System.out.println("记录被删除");
			RecordStore.deleteRecordStore(rmsName);
		} catch (RecordStoreNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RecordStoreException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}


用法:
//读取记录,通常初始化的时候使用
RmsLoginInfo rms=new RmsLoginInfo();
LoginInfo loginInfo=rms.readRecordStore();
if(loginInfo!=null){
//这里可以对一些参数赋值
}else{
//
}

//保存用户名和密码
if(selected){
LoginInfo loginInfo=new LoginInfo();
loginInfo.setName(Consts.field0);
loginInfo.setPassowrd(Consts.field1);
loginInfo.setSelected(selected);
RmsLoginInfo rms=new RmsLoginInfo();
rms.writeRecordStore(loginInfo);
}else{
RmsLoginInfo.deleteRecordStore();
}
分享到:
评论

相关推荐

    组态软件 RMS2000 源代码

    在RMS2000的源码中,C++的特性将被充分利用,如面向对象编程(OOP)来设计类和对象,模板机制用于代码复用,以及异常处理来确保程序的健壮性。 在学习和分析RMS2000的源代码时,你需要关注以下几个关键点: 1. 数据...

    RMS-MidLet例子

    这个例子之所以说是“分层的”,可能是因为它采用了面向对象的设计原则,将业务逻辑、用户界面和数据访问分离到不同的类中,提高了代码的可读性和可维护性。 为了运行和测试这个RMS-MidLet例子,你需要在Eclipse中...

    RMS.zip_rms 酒店系统

    首先,C++6.0作为一款强大的面向对象编程语言,被广泛应用于系统软件、应用软件和游戏开发等领域。其灵活性和高效性使其成为构建复杂系统如酒店管理系统的选择之一。C++6.0提供了丰富的库支持,可以方便地进行数据...

    lingqiufeng-bm-rms-master.zip

    MyBatis是一个轻量级的持久层框架,简化了SQL操作,使得Java对象和数据库表之间的映射更加直观。 "管理系统"通常包括用户管理、权限控制、数据处理等功能,这些功能在SSM框架下可以通过控制器(Controller)、服务...

    rms.zip_PowerBuilder

    PowerBuilder是由Sybase公司开发的一款基于事件驱动的可视化编程工具,它提供了面向对象的编程环境,支持数据窗口、图形用户界面以及数据库访问等功能。PowerBuilder以其高效、易用的特性,深受开发者的喜爱。 二、...

    fft.rar_ FFT_c fft_fft rms pf_fft c++_单片机

    C++版本的实现可能提供了更面向对象的接口或者更高级的功能,比如错误处理、内存管理等。 文件列表中的"fft"很可能是实现FFT的源代码文件,而"www.pudn.com.txt"可能是一个包含下载链接或版权信息的文本文件。 总...

    rms-server:RMS - 服务器应用程序

    它允许开发者将数据库操作转换为面向对象的编程,使得处理数据库变得更加直观。Hibernate提供了丰富的API,包括实体管理、事务管理、缓存机制等,为应用程序提供了一种灵活的方式来处理数据库交互。 在"rms-server-...

    CloneExcel 及vc源码

    C++是一种强大的、面向对象的编程语言,能够高效地处理系统级别的操作,如读取文件或与操作系统交互。 “RMS”全称为权利管理服务,是微软提供的一种信息保护技术,用于控制用户对数字内容的使用,包括读取、复制、...

    操作系统概念课件:Chapter 5 CPU Scheduling.pdf

    Java 线程调度:Java 是一种面向对象的编程语言,支持多线程编程。Java 线程调度机制可以提高系统的并发能力和吞吐量。 算法评估:算法评估是对调度算法的性能进行评估的过程。常见的性能指标包括 CPU_utilization...

    IdTracks-RMS-Selenium

    【标签】"Java"说明这个项目的实现语言是Java,这是一种面向对象的、高度流行的编程语言,特别适合开发企业级应用和提供强大的后端支持。在Selenium的上下文中,Java通常用于编写测试脚本,这些脚本可以模拟用户在...

    MeshLab最新源码

    7. **C++编程语言**:MeshLab由C++编写,这是面向对象编程的强类型语言,以其高效性和跨平台性而闻名。熟悉C++的开发者可以更容易地理解源码,进行二次开发。 8. **Qt框架**:MeshLab使用Qt作为其图形用户界面(GUI...

    adam-rms-s3Deletor:一个友好的小机器人,可以删除上传到AdamRMS的图像

    Python是一种高级、易读、面向对象的编程语言,广泛用于Web开发、数据分析、人工智能等多个领域。它的简洁语法使得编写这样的工具变得快速且高效。 在AWS S3中,存储桶(Bucket)是存储对象(Objects,如文件)的...

    DIgSILENT_Powerfactory PPT

    软件采用分级的面向对象的数据管理方式,提供电力系统运行、规划方案信息管理功能。它还具有图形化操作模式,用户可以通过图形编辑界面进行操作。digSILENT PowerFactory还支持虚拟表计技术,用户可根据需要定义变量...

    J2ME俄罗斯方块游戏

    在代码实现上,开发者可能采用了面向对象的设计原则,将游戏的不同元素如方块、网格、计分系统等封装为独立的类,以提高代码的可维护性和可扩展性。可能还运用了多线程技术,使游戏逻辑和用户界面更新独立进行,保证...

    J2ME手机游戏编程入门

    - **Java语言**: Java是一种广泛使用的面向对象编程语言,以其跨平台性(Write Once, Run Anywhere)而闻名。Java支持多种设备,包括桌面计算机、服务器、移动设备等。 #### 三、“Hello, World!”程序详解 1. **程序...

    C#点菜系统,图形化界面,已做软件测试

    1. **C#编程语言**:C#是一种面向对象的编程语言,由微软公司开发,广泛应用于Windows平台上的应用开发。在这个点菜系统中,C#被用来构建系统的后端逻辑,处理数据交互、业务规则和数据库操作。 2. **图形化用户...

    移动行业信息化-Java手机技术之J2ME新手入门要点.doc

    2. **面向对象思想**:理解类和对象的概念,以及继承和多态等面向对象编程的核心概念。 3. **异常处理**:了解如何在代码中捕获和处理可能出现的异常,确保程序的健壮性。 4. **多线程**:J2ME中常用于实现并发操作...

    J2ME相关技术,介绍J2ME的问题处理

    2. 面向对象编程:理解类与对象的概念,以及继承和多态。 3. 异常处理:学会如何捕获和处理程序运行时可能出现的错误。 4. 多线程:理解线程的概念,知道如何创建和管理并发执行的任务。 然而,J2ME不涉及J2SE中的...

Global site tag (gtag.js) - Google Analytics