J2ME记录管理存储

J2ME 记录管理系统

J2ME 记录管理系统(RMS)提供了一种机制,通过这种机制,MIDlet 能够持久存储数据 ,并在以后检索数据。在面向记录的方法中,J2ME RMS 由多个 记录存储构成。J2ME RMS 和 MIDlet 接口连接的概貌在图 1 中给出。

图 1. J2ME RMS 和 MIDlet 接口连接的概貌

可以将每个记录存储想像成一个记录集合,它将跨多个 MIDlet 调用持久存在。设备平台 负责在平台正常使用的整个过程(包括重新启动、换电池等)中,尽全力维护 MIDlet 的记 录存储的完整性。

记录存储在与平台相关的位置(比如非易失性设备存储器)创建,这些位置不直接公开给 MIDlet。RMS 类调用特定于平台的本机代码,这种本机代码使用标准 OS 数据管理器函数来 执行实际的数据库操作。

记录存储实现确保所有单个的记录存储操作都是原子的、同步的以及序列化的,因此多个 访问将不会出现数据毁坏。记录存储被盖上时间戳来指示它上次被修改的时间。记录存储还 维护 版本(version),它是一个整数,修改记录存储内容的操作每发生一次,这个数加一 。版本和时间戳对于同步目的很有用。

当 MIDlet 使用多个线程访问一个记录存储时,协调该访问是 MIDlet 的责任;如果它不 能这样做,可能出现无法意料的结果。同样,如果一个平台使用试图同时访问记录存储的多 个线程执行记录存储的同步,那么对 MIDlet 及其同步引擎之间的记录存储实施排外访问是 平台的责任。

记录存储中的每个记录是一个字节数组,并且有唯一的整数标识符。

管理设备数据库

javax.microedition.rms.RecordStore 类代表 RMS 记录存储。它提供了几个方法来管理 以及插入、更新和删除记录存储中的记录。

管理记录存储

要打开一个记录存储,调用 javax.microedition.rms.RecordStore 的 openRecordStore() 方法。 public static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary) 打开具有指定名称 recordStoreName 的记 录存储。如果没有具有这个名称的记录存储,那么调用这个方法来创建一个。

如果记录存储已经打开,这个方法将返回对同一个记录存储对象的引用。

清单 1. 打开一个 RecordStore

RecordStore rs = RecordStore.openRecordStore ("MyAppointments",true);

一旦所有操作完成,对 closeRecordStore() 的调用将关闭指定名称的记录存储。当一个 记录存储被关闭时,不能进行进一步的操作。

清单 2. 关闭一个 RecordStore

Rs.closeRecordStore();

通过调用 deleteRecordStore() 方法可以删除指定名称的记录存储。

清单 3. 删除一个 RecordStore

RecordStore.deleteRecordStore("MyAppointments");

时间: 2024-08-04 03:38:15

J2ME记录管理存储的相关文章

使用J2ME实现移动支付

移动支付解决方案使用了 MIDP/SIM API.SSL 和 Java Card 平台,Java Card 平台提供了比通常情况更高的安全性和网络效率,并且还为事务本身提供经济上可行的适当的安全性. 移动支付体系结构 移动支付可以分成截然不同的类型 - 封闭式与开放式."开放式"移动支付机制更具优势,这是因为它不要求用户与提供者通过同一家支付银行或"结算所"完成支付,从而允许用户具有更大的灵活性.实际的支付通常有两类 - 小额支付与大额支付. 移动支付数据与其他任何

J2ME游戏中读入文本并存储在String数组中

数组 一个在J2SE中十分钟即告完成的代码,在J2ME中花费了一个下午.是什么样的代码呢?[要求]在游戏中读入文本形式存储的hints [分析]J2ME没有BufferReader,用InputStreamReader吧既然没有BufferReader,也就不要奢望有readLine()了,自己慢慢循环吧 [源代码] 以下内容为程序代码/* read hint-------------------------------------- */ /** * This is the hints * *

J2ME中使用缓存将屏幕内容存储为Image

缓存 本文介绍如何将手机屏幕的内容存储为Image对象,这里认为手机屏幕上显示的是一个Canvas.完成这一个功能的思想就是使用缓冲机制.我们不能直接获得Canvas上的像素,因此不能直接从Canvas上的内容获得Image对象.转换一下思路,如果把要绘制的Canvas上的内容首先绘制到一个Image上,而这个Image并不显示到屏幕上,只是在绘画完成后一次性的显示到屏幕上.有经验的朋友一定联想到了双缓冲机制,不过这里并不是要使用双缓冲解决闪屏的问题,而是要得到当前Canvas的内容. 下面我们

j2me的rms存储

问题描述 为什么在nokian97上rms无法存储? 解决方案 解决方案二:把问题描述详细些,理论上不会有这问题.同样的代码在别的机型上没问题吗?在N97上把程序删除后再装试试解决方案三:在别的机型上基本上没什么问题,但是不知道为什么在这个上面就会出问题!具体细节就是程序运行的时候存储了一些东西,下次再运行就读不出来了解决方案四:写个最简单的RMS存储DEMO.放N97上测下看看解决方案五:有异常的话就把异常写出来解决方案六:最好把rms存储的代码贴一下,这样大家可以具体分析一下!解决方案七:帮

新手入门:J2ME基本概念解析

概念 J2ME,即Java 2 Micro Edition,是SUN公司推出的在移动设备上运行的微型版Java平台,常见的移动设备有手机,PDA,电子词典,以及各式各样的信息终端如机顶盒等等. 由于移动终端的类型成千上万,而且计算能力差异非常大,不可能像桌面系统那样仅仅两三个版本的JVM即可满足Windows,Linux和Unix系统,因此,J2ME不是一个简单的微型版的JVM.为了满足千差万别的移动设备的需求,SUN定义了一系列的针对不同类型设备的规范,因此,J2ME平台便是由许多的规范组成的

J2ME中实现可伸展目录树TreeList

J2ME里面有自带的List类,但是功能太弱,没有实现View和Model的分离,所以操作起来比较费事.本来事想写一个Canvas的TreeList,但是画起来算坐标又太麻烦,所以选取了一个折中的方法,继承List,实现一个操作起来比较方便的组件. 目的: 1.可伸缩的目录树结构,暂时先实现两层. 2.Label和存储内容分离. 3.激活和非激活图片分开. 4.通过选择事件可以准确快速找到对应内容 5.存储内容无关性,里面可以放置任何Object 实现思路: 1.封装一个ExpandItem类,

J2ME 潜艇大战游戏设计与实现Demo

设计  J2ME 潜艇大战游戏设计与实现Demo 黄叶 (www.hyweb.net) 摘要 本文给出了一个飞机射击类(潜艇)游戏的设计过程以及相应的流程图,并提供了Demo版源代码下载地址,游戏在sun wtk v2.2 下调试通过. 声明 本游戏所用的资源大多不属于作者,代码仅供非商业用途的学习参考. 以下为游戏的几张截图 设计 1 游戏操作流程: 游戏的初始画面是一个implusive的List列表格式,选择new game以后就可以启动游戏,游戏是以全屏方式开启,但仍有用于暂停/开始和退

J2ME Wireless Toolkit 2.2 新改进

屡获殊荣的 J2ME Wireless Toolkit 已经成为 J2ME 开发应用程序的事实标准工具包.自从 2000 年初次亮相以来,该工具包一直在发展以赶上移动 Java 技术外观上快速改变的步伐.不要被从 2.1 版本以来的小改变所误导.新的工具包在四个重要的领域支持 Java Community Process (JCP) 所指定的新的可选 API:3D 图形.多媒体通信.蓝牙连网(Bluetooth networking)和数据管理.本文将描述这些新的 API 并且向您展示如何在工具

增强J2ME的String能力——分割字符串(附源代码)

源代码|字符串 从JDK1.4以后,String类中新增了split方法来实现字符串的分割,但是在J2ME中却没有该方法(MIDP2.0中也没有实现),但是在实际使用过程中,有些时候的确要用到这种操作,这里将我以前实现的一段代码和大家共享,不足之处大家多提意见和建议: /** * 分割字符串,原理:检测字符串中的分割字符串,然后取子串 * @param original 需要分割的字符串 * @paran regex 分割字符串 * @return 分割后生成的字符串数组 */ private