`
yzhong_sa
  • 浏览: 89958 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

J2me 入门路之---3 RecordStore

阅读更多
package com.sa.demo.rs;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
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;

public class TestRS2 extends MIDlet implements CommandListener {
private Command exitCommand, addCmd, delCmd, setCmd, getCmd;
private Display display;
private RecordStore rs; // 定义记录存储rs
private TextBox showMsg; // 用于显示操作结果信息
private String msg = ""; // 存放用于文本框显示的信息

public TestRS2() {

display = Display.getDisplay(this);
showMsg = new TextBox("操作信息:", null, 512, TextField.ANY);
exitCommand = new Command("退出", Command.EXIT, 1);
addCmd = new Command("添加记录", Command.SCREEN, 1);
delCmd = new Command("删除记录", Command.SCREEN, 1);
setCmd = new Command("修改记录", Command.SCREEN, 1);
getCmd = new Command("读取记录", Command.SCREEN, 1);
showMsg.addCommand(exitCommand);
showMsg.addCommand(addCmd);
showMsg.addCommand(delCmd);
showMsg.addCommand(setCmd);
showMsg.addCommand(getCmd);
showMsg.setCommandListener(this);
if (OpenRS("myRS"))
msg += "记录存储myRS打开成功";
else
msg += "记录存储myRS打开失败";
}

private boolean OpenRS(String rsName) {
// TODO Auto-generated method stub
try {
rs = RecordStore.openRecordStore("rsName", true);
return true;
} catch (RecordStoreFullException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (RecordStoreNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (RecordStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
if (CloseRS())
System.out.println("记录存储myRS关闭成功");
else
System.out.println("记录存储myRS关闭失败");
}

private boolean CloseRS() {
// TODO Auto-generated method stub
return false;
}

protected void pauseApp() {
// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
showMsg.setString(msg);
display.setCurrent(showMsg);
}

public void commandAction(Command c,Displayable d) {
int recId;
if (c == exitCommand) {
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
notifyDestroyed();
}
else if (c == addCmd) {
if ((recId = AddRec()) != -1)
msg = "记录添加成功,记录号为 " + recId;
else
msg = "记录添加失败";
showMsg.setString(msg);
}
else if (c == delCmd) {
if ((recId = DelRec()) != -1)
msg = "记录删除成功,记录号为 " + recId;
else
msg = "记录删除失败";
showMsg.setString(msg);
}
else if (c == setCmd) {
if ((recId = SetRec()) != -1)
msg = "记录修改成功,记录号为 " + recId;
else
msg = "记录修改失败";
showMsg.setString(msg);
}
else if (c == getCmd) {
msg = GetRec();
showMsg.setString(msg);
}
}

public int DelRec() {
int id, num;
try {
id = rs.getNextRecordID();
num = rs.getNumRecords();
}
catch (RecordStoreException e) {
        return -1;
}
if (num >0) {
for (int i=id-1; i>0; i--) {
try {
rs.deleteRecord(i);
return i;
}
catch (RecordStoreException e) { }
}
}
        return -1;
    }

private int AddRec() {
// TODO Auto-generated method stub
int id = -1;
int recID = -1;
try {
id = rs.getNextRecordID();//添加记录 返回记录的位置

} catch (RecordStoreNotOpenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String data = "Data of Record :"+id;
byte[] rec = data.getBytes();
try {
recID = rs.addRecord(rec, 0, rec.length);//插入数据。

} catch (RecordStoreNotOpenException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreFullException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RecordStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return recID ;
}
public int SetRec() {
int id, num;
try {
id = rs.getNextRecordID();
num = rs.getNumRecords();
}
catch (Exception e) {
        return -1;
}
        String rec;
byte [] data;
if (num >0) {
for (int i=id-1; i>0; i--) {
rec = "Modified Data of Record " + i;
data = rec.getBytes();
try {
rs.setRecord(i, data, 0, data.length);
return i;
}
catch (RecordStoreException e) { }
}
}
        return -1;
    }
    // 显示所有记录
    public String GetRec() {
int id, num;
try {
id = rs.getNextRecordID();
num = rs.getNumRecords();
}
catch (RecordStoreException e) {
        return null;
}
        String rec = "记录存储中共有" + num + "条记录:";
byte [] data = null;
if (num >0) {
for (int i=1; i<id; i++) {
try {
int size = rs.getRecordSize(i);
if (data == null || data.length < size) {
data = new byte[size];
}
rs.getRecord(i, data, 0);
rec += "\n" + new String(data,0,size);
}
catch (RecordStoreException e) {
}
}
}
        return rec;
    }
// 打开(创建)记录存储
}
[align=left][/align]
分享到:
评论

相关推荐

    J2ME-java手机PDA程序设计入门-王森

    《J2ME-java手机PDA程序设计入门-王森》这本书是针对初学者的一本教程,旨在引导读者快速掌握在Java平台上开发移动设备应用程序的基本技能。J2ME,全称Java Micro Edition,是Java平台的一个子集,专门用于资源有限...

    J2ME入门最基础的资料,一看即会噢...

    总的来说,"J2ME入门最基础的资料"将引导初学者逐步理解J2ME的结构、API、开发流程和实践技巧,为后续深入学习和开发打下坚实基础。通过详细阅读和实践提供的资料,你将能够快速入门J2ME,开发出自己的第一个MIDlet...

    j2me入门教程j2me入门教程j2me入门教程

    RecordStore是J2ME中用于持久化数据的主要机制,允许在设备上存储键值对。它不是关系型数据库,但适用于小规模的数据存储需求。 十、打包与部署 完成开发后,J2ME应用被打包成JAR文件,通过jad文件(包含应用描述和...

    J2ME 开发入门课件

    **J2ME 开发入门课件** Java Micro Edition(J2ME)是Java技术的一个重要分支,主要用于嵌入式设备和移动设备的开发,如手机、智能家电等。本课件是一套完整的J2ME开发入门教程,包含了从基础知识到实践应用的全...

    J2ME手机入门教程

    **J2ME手机入门教程** Java 2 Micro Edition(J2ME)是Java平台的一个重要分支,主要用于开发在小型设备上运行的应用程序,如移动电话、PDA、智能电视等。J2ME提供了丰富的功能,使得开发者能够创建具有交互性和...

    j2ME手机游戏编程入门

    **Java 2 Micro Edition (J2ME) 手机游戏编程入门** J2ME是Java平台的一个子集,专门设计用于资源有限的设备,如早期的智能手机和移动设备。它是开发移动应用程序,尤其是游戏的常见选择,因为它具有跨平台兼容性、...

    J2ME手机开发入门源码 J2ME

    **J2ME手机开发入门源码详解** Java 2 Micro Edition(J2ME)是Java技术的一个重要分支,主要用于嵌入式系统,如移动设备、智能家电等。它提供了跨平台的能力,使得开发者可以编写一次代码,到处运行。在本文中,...

    J2ME手机开发入门

    《J2ME手机开发入门》是一本针对初学者的指南,旨在帮助读者快速掌握Java Micro Edition(J2ME)在移动设备上的应用开发技术。J2ME是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如早期的智能手机和平板...

    j2me手机游戏编程入门 示例

    在移动设备领域,Java 2 Micro Edition(J2ME)是一种广泛用于开发手机游戏和应用程序的平台。本教程“J2ME手机游戏...在每个示例中,你都可以学习到如何将这些概念应用到实际项目中,从而开启你的J2ME游戏编程之旅。

    j2me手机程序入门 源代码

    **J2ME手机程序入门源代码详解** ...总的来说,J2ME为移动设备开发提供了强大的工具和API,通过深入理解和实践“j2me手机程序入门源码”,你可以快速掌握移动开发的基本技能,开启你的J2ME编程之旅。

    J2me手机游戏编程入门

    本篇文章将深入探讨J2ME手机游戏编程的基础知识,帮助初学者入门。 首先,我们需要了解J2ME的架构。J2ME由两部分组成:配置(Configurations)和Profile(Profiles)。配置定义了设备的基本硬件和软件能力,比如...

    J2ME小游戏的源码

    **J2ME游戏源码详解** Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。...同时,这些源码也可以作为教学材料,帮助初学者快速入门J2ME游戏开发。

    netBeans J2ME PDA 手机 编程入门

    标题中的“netBeans J2ME PDA 手机 编程入门”指的是使用NetBeans集成开发环境(IDE)进行Java Micro Edition(J2ME)的编程,以开发针对PDA(个人数字助手)和手机的应用程序。这是一门面向初学者的教程,旨在帮助...

    J2ME手机游戏编程入门

    J2ME提供了RecordStore API来存储小量数据,例如游戏得分或用户设置。对于大量数据,可以考虑使用文件流或远程服务器。 8. **网络通信** MIDP的Connection API允许应用程序访问HTTP、WAP和TCP/IP网络。这使得游戏...

    J2ME学习资料打包下载

    本压缩包包含了丰富的J2ME学习资源,包括游戏开发和中文教程,对于想要入门或提升J2ME编程技能的开发者来说极具价值。 "j2me游戏开发.rar":这个文件很可能是一个关于J2ME游戏开发的教程或实例集合。J2ME的游戏开发...

    J2ME手机游戏编程入门源代码

    总的来说,通过分析这个J2ME手机游戏编程的源代码,你不仅可以学习到J2ME平台的基础知识,还能掌握游戏开发中的核心概念和技术,从而为自己的游戏开发之路打下坚实的基础。这是一个很好的实践平台,可以让你在实践中...

    很适合于j2me初学者

    **J2ME初学者入门教程** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、智能手表和家用电器等嵌入式系统。作为初学者,了解J2ME的基础知识至关重要,因为这将为你...

    J2me保存记录框架(封装RMS)

    这个提供的 J2ME 入门资料包含了封装好的 RMS 类,对于初学者来说,这是一个很好的起点,可以帮助他们快速理解如何在 J2ME 应用中有效地管理数据。通过分析 `src` 目录下的源代码,可以学习到具体的实现细节,并结合...

    《J2ME手机游戏编程入门》实例源代码

    《J2ME手机游戏编程入门》是一本专为初学者设计的教程,旨在引导读者进入移动游戏开发的世界,特别是使用Java 2 Micro Edition (J2ME) 技术。J2ME是Java平台的一个轻量级版本,适用于资源有限的设备,如早期的智能...

Global site tag (gtag.js) - Google Analytics