第9章 MIDP数据管理程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
getSize
getSizeAvailabl e getVersion getLastModifie d
案例9.1 记录存储的建立、打开与关 闭
(a)程序运行后
(b)建立记录存储
(c)使用记录存储
(d)关闭记录存储
9.2.2 记录的基本操作
方 法 addRecord 语法及说明 语法:public int addRecord(byte[] data, int offset, int numBytes) 将字节数组data中,从偏移量offset开始,共numBytes个字节的数据作为一条记录添 加到记录存储中,返回该记录的记录号 语法:public byte[] getRecord(int recordId) 将由记录号recordId指定的记录复制到字节数组中,返回该数组 语法:public int getRecord(int recordId, byte[] buffer, int offset) 将由记录号recordId指定的记录读取到字节数组buffer中,偏移量offset为复制时数 组中的起始位置。返回读取的字节数 语法:public void setRecord(int recordId, byte[] newData, int offset,int numBytes) 修改由记录号recordId指定的记录,该记录的新内容为字节数组newData中,从偏移 量offset开始,共numBytes个字节的数据 语法:public void deleteRecord(int recordId) 删除记录号为recordId的记录。该记录号不会被重用 语法:public int getNextRecordID() 返回将添加在记录存储中的下一条记录的记录号 语法:public int getNumRecords() 返回记录存储中的记录的数量 语法:public int getRecordSize(int recordId) 返回由记录号recordId指定的记录中数据的大小。单位为字节 getRecord
openRecordStore
public static RecordStore openRecordStore(String recordStoreName, String vendorName, String suiteName) 在指定MIDlet套件中打开一个记录存储。参数 recordStoreName用来指定要打开的记录存储的名称;参 数vendorName为MIDlet套件的厂商名;参数suiteName 为MIDlet套件的名称。当记录存储被非当前MIDlet套件中 的程序打开时,该记录存储建立时的模式必须是 RecordStore.AUTHMODE_ANY;而不管在什么模式下, 该记录存储总能被它所在的MIDlet套件中的程序所使用
记录存储的其他信息
长整型数据的时间戳:记录最后被修改的 时间 版本号:每当记录存储被修改时,版本号 就会增加。 用途:多个MIDlet使用同一个记录存储以及 多个记录存储同步时十分有用。
javax.microedition.rms包
名 称 RecordStore RecordEnumeration RecordComparator RecordFilter RecordListener RecordStoreException RecordStoreNotFoundException RecordStoreNotOpenException InvalidRecordIDException RecordStoreFullException 说 明 类,表示记录存储并且提供了记录存储的打开和关闭,记录的增加、 删除和修改等基本方法 接口,用于实现一个双向的枚举器,能够为记录存储提供索引的功 能 接口,用于定义一个比较器,能够对记录存储中的两条记录进行比 较。主要用于记录的排序 接口,用于定义一个过滤器,能够判断记录是否匹配自定义的标准。 主要用于记录的查询 接口,用于定义一个监听器,能够对记录的修改、增加和删除等事 件进行监听 异常类,是下面四个异常类的父类,在记录存储发生常规异常时抛 出 异常类,在不能找到指定的记录存储时抛出 异常类,在对一个已经关闭的记录存储操作时抛出 异常类,当操作中的记录号无效时抛出 异常类,当记录存储已满,无法完成操作时抛出
closeRecordStore()
语法:public void closeRecordStore() 关闭记录存储。只有当记录存储的关闭次 数与打开次数一致时,它才会被真正关闭 注意:只有当记录存储的关闭次数与打开 次数相同时,它才会真正关闭
deleteRecordStore
public static void deleteRecordStore(String recordStoreName) 删除指定的记录存储。记录存储只能被它 所在的MIDlet套件删除。参数 recordStoreName用来指定要删除的记录存 储的名称
第9章 MIDP数据管 理程序设计
9.1 记录管理系统RMS概述
数据在持久存储中的永久保存问题
J2SE: JDBC/RDBMS,对象序列化等 J2ME: 面向记录的简单数据管理系统---记录管 理系统(Record Management System, RMS)
记录管理系统
记录存储(Record Store),保存和管理数据, 类似于数据库中的表 记录(Record)
openRecordStore
public static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary, int authmode, boolean writable) 在当前MIDlet套件中打开(或新建)一个能被其他MIDlet 套件共享的记录存储。参数recordStoreName和 createIfNecessary在这里的作用与前面方法中一样;参数 authmode表示创建的记录存储能否被其他MIDlet套件共 享,取RecordStore.AUTHMODE_PRIVATE表示只能被 当前MIDlet套件使用,取RecordStore.AUTHMODE_ANY 表示能被其他MIDlet套件使用,此参数只在新建记录存储 时有效;参数writable表示创建的记录存储能否被其他 MIDlet套件写入,取true表示能写,取false表示不能写, 该参数同样只在新建记录存储时有效
获取记录存储相关信息的方法
方 法 语法及说明 语法:public static String[] listRecordStores() 返回当前MIDlet套件中所有记录存储的名称。当不存在记录存储时,返 当不存在记录存储时, 当不存在记录存储时 回null 语法:public String getName() 返回当前记录存储的名称 语法:public int getSize() 返回记录存储占用的空间大小,单位为字节。其中包括任何与实现有关 的数据,如记录存储用于保存状态的数据结构等 语法:public int getSizeAvailable() 记录存储还能使用的空间大小,单位为字节。由于还需存放与实现有关 的数据,MIDlet真正能够用于存储的空间将小于该值 语法:public int getVersion() 返回记录存储的版本号。每当记录存储被修改,它的版本号会增加 语法:public long getLastModified() 返回记录存储最后被修改的时间。格式与System.currentTimeMillis()方法 相同 listRecordStore s getName
创建共享记录存储
String recordStoreName = "myRecordStore"; // 需建立的记录存储名 RecordStore rs = null; try { rs = RecordStore.openRecordStore(recordStoreName,true,RecordStore. AUTHMODE_ANY, true); } catch( RecordStoreException e ) { … // 异常处理语句 }
setMode
public void setMode(int authmode, boolean writable) 改变记录存储的模式。只有记录存储所在 的MIDlet套件才能改变它的模式。参数 authmode和writable在这里的含义与在前面 第二种形式的openRecordStore()方法中一 样
记录存储的访问与共享
一个MIDlet套件中的记录存储可以被该套件 中的所有MIDlet直接访问 MIDP 2.0规范中,只要记录存储允许,其 他套件中的MIDlet可以通过记录存储名和记 录存储所属套件的相关属性访问它。
Байду номын сангаас录
记录存储是使用记录来管理数据的,每个 记录存储中都可以包含多条记录。 每条记录是一个字节数组,它的长度可变, , 通过一个唯一的Record ID Record ID来标识。 Record ID是一个整数,从1开始分配,每 当记录存储中添加一条记录,记录号会比 前一记录号增加1。删除记录,对应的记录 号不会重新利用。
创建记录存储
String recordStoreName = "myRecordStore"; // 需建立的记录存储名 RecordStore rs = null; try { rs = RecordStore.openRecordStore( recordStoreName, true ); } catch( RecordStoreException e ) { … // 异常处理语句 }
getRecord
setRecord
deleteRecord getNextRecordID getNumRecords getRecordSize
记录的增加
byte [] data = new byte[]{ 0, 1, 2, 3 }; // 添加到记录中的数据 int recordID; // 保存新记录的记录号 // 将字节数组data添加为新记录 recordID = rs.addRecord( data, 0, data.length );
记录存储
不同的平台实现方法不同 由MIDlet创建,隶属于该MIDlet所在的 MIDlet Suite,套件被删除时,记录存储也 Suite 被随之删除 一个MIDlet Suite中,可以有多个记录存储, 每个记录存储的名称必须不同,由任意 Unicode字符组成,区分大小写,最多32个 字符。
打开共享记录存储
String recordStoreName = "myRecordStore"; // 需打开的记录存储名 String vendorName = "myCompany"; // 记录存储所在套件的厂商名 String suiteName = "suite1"; // 记录存储所在套件的名称 RecordStore rs = null; try { rs = RecordStore.openRecordStore(recordStoreName, vendorName, suiteName); } catch( RecordStoreException e ) { … // 异常处理语句 }
9.2 记录存储的基本操作
记录存储的管理
打开、关闭、删除记录存储
记录的基本操作
记录的增加、读取、删除和修改操作
9.2.1 记录存储的管理
public static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary) 在当前MIDlet套件中打开(或新建)一个记录存 MIDlet 储。参数recordStoreName用来指定要打开的记 录存储的名称;参数createIfNecessary表示当指 定的记录存储不存在时是否创建该记录存储,取 true表示创建,取false表示不创建