你的分享就是我们的动力 ---﹥

实战J2ME中RMS开发

时间:2011-11-04 07:51来源:www.chengxuyuans.com 点击:

RMS 提供常用的方法:打开存储表,J2ME提供了统计的静态方法处理打开表的操作。

  1. public static RecordStore openRecordStore(String recordStoreName,  
  2. boolean createIfNecessary,  
  3. int authmode,  
  4. boolean writable)  
  5. throws RecordStoreException, RecordStoreFullException,  
  6. RecordStoreNotFoundException 

recordStoreName -- 需要打开的表名

createIfNecessary -- 如果存在就打开,如果不存在就创建,假如ture的情况,fasle则只打开存在的表

Authmode -- 访问的方法权限

Writable -- 是否允许外部MIDlet套件访问,如果表存在,此参数是可忽略的。

删除存储表:

  1. public static void deleteRecordStore(String recordStoreName)  
  2. throws RecordStoreException, RecordStoreNotFoundException 

删除表格,recordStoreName-为指定的表格名称,如果表格正在打开,或者不存在都会抛出异常。

RMS,最常用的操作是添加,编辑,删除,更新记录。

添加,RMS只支持添加二进制的数据,一般采用DataOutputStream的方式进行序列化。

  1. public int addRecord(byte[] data, int offset, int numBytes)  
  2. throws RecordStoreNotOpenException, RecordStoreException,  
  3. RecordStoreFullException 

data -- 保存数据

offset -- 起始索引

numBytes -- 长度

删除

  1. public void deleteRecord(int recordId)  
  2.  throws RecordStoreNotOpenException, InvalidRecordIDException,  
  3. RecordStoreException 

recordId -- 记录的索引,一般采用遍历的方式获取索引,或者通过addRecord也可以返回对于的索引。

编辑,更新

  1. public void setRecord(int recordId, byte[] newData,  
  2.  int offset, int numBytes) 

更新指定索引的记录。

一般的添加记录的方式:

1.构建一个DataOutputStream流进行写操作,然转换成byte[] 写入RMS中。

2.示例

  1. ByteArrayOutputStream sBout = new ByteArrayOutputStream();  
  2. DataOutputStream sDout = new DataOutputStream(sBout);  
  3. sDout.wirteInt();  
  4. sDout.writeUTF();  
  5. ....................  
  6. sBout.toByte() .  
  7. Svae(byte); 

RMS操作就是如此简单。

注意问题

注意对RMS容量的控制。

不建议直接删除表,应该逐条删除记录,然后再删除表。

实战Demo

笔者采用RMS写的简单数据库引擎。

次引擎支持:

1,添加,删除,编辑,遍历,查询记录。

采用的是类SQL方式。比如你可以crate table,delete table,insert, select等方式操作记录。
具体内部实现方式这里就不一一阐述了,有兴趣的读者可以自行研究代码。

下载地址: http://wuhua.javaeye.com/blog/54528

4.电话本案例
本案例只是介绍笔者RMS引擎的用法,有相当部分的功能未能在这里阐述,有兴趣的读者可以自行自行研究代码。

程序功能

1.添加联系人包括联系资料是: 姓名, 手机, email, 地址.

2.修改联系人资料.

3.查询联系人资料,

4.删除联系人.
 

项目设计

1.采用本人写的简单的rms数据引擎. 也算是一个比较丰富的例子供大家学习交流

2.采用高级UI展示.

3.整体架构采用Web常用的方式MVC结构,充分展示j2me设计也可以很灵活.并且在性能方面的问题不大

这里介绍几个系统核心接口:

ResultSet --- 对数据操作的结构集, 比如查询的时候将返回一个可用的结构.里面的用法跟JDBC差不多.

Query --- 对本人自定义的sql进行执行,执行返回ResultSet结构

DataBaseServer --- 对RMS引擎的启动,关闭.资源处理,摆脱直接操作RMS各个异常的困扰

QueryBuilder --- 静态工厂类,通过sql创建一个Query实例.

关于自定义SQL语法设计

比如创建表格语法是

create :friend: f_name :f_mobile :f_email :f_address

插入数据是:

  1. Query q = QueryBuilder.builder("insert :friend :f_name :f_mobile :f_email: f_address ");  
  2. q.setString("f_name",friend.getName() );  
  3. q.setString("f_mobile", friend.getPhone());  
  4. q.setString("f_email", friend.getEmail());  
  5. q.setString("f_address", friend.getAddress());  
  6. q.execute(); 

1. 添加表格

  1. create table_name column_1 column_2 column_3 ......  
  2. drop table_name 

2. 操作数据

insert table_name column_1 ..... 对于这个操作,然后具体在api调用setString(index, value)

update table_name set ..... where column_1 = key;

select table_name f_id=1;

源代码下载:http://rongqing.rao.googlepages.com/PhotoBook.rar

关于作者

饶荣庆

从事J2ME,Android开发工作多年,现在就职于UCWEB。从事浏览器相关的开发工作。

  1. J2EE开发框架发展简史续
  2. 为什么J2EE如此低效--用户无法参与开发
  3. js及j2ee开发中解决乱码的小方法
  4. 浅谈J2EE开发技术
  5. J2EE的核心技术之JDBC简介篇

本文地址http://www.chengxuyuans.com/J2ME/30472.html

推荐文章