技术开发 频道

RMS的实战开发

【IT168 技术文档】

1.内容介绍
介绍RMS的实战开发。

介绍笔者开源的小型数据库引擎

RMS-记录管理系统,J2ME的一个小型,简单的存储解决方案。
 

2.预期读者&建议
J2ME程序员。


3.实战讲解

基本操作
 

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

public static RecordStore openRecordStore(String recordStoreName,

            boolean createIfNecessary,

            int authmode,

            boolean writable)

  throws RecordStoreException, RecordStoreFullException,

    RecordStoreNotFoundException

 

recordStoreName -- 需要打开的表名

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

Authmode -- 访问的方法权限

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

 

删除存储表:

public static void deleteRecordStore(String recordStoreName)

throws RecordStoreException, RecordStoreNotFoundException

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

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

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

public int addRecord(byte[] data, int offset, int numBytes)

  throws RecordStoreNotOpenException, RecordStoreException,

    RecordStoreFullException

data -- 保存数据

offset -- 起始索引

numBytes -- 长度

删除

public void deleteRecord(int recordId)

   throws RecordStoreNotOpenException, InvalidRecordIDException,

RecordStoreException

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

 

编辑,更新

public void setRecord(int recordId, byte[] newData,

       int offset, int numBytes)

  更新指定索引的记录。

  一般的添加记录的方式:

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

ByteArrayOutputStream sBout = new ByteArrayOutputStream();

DataOutputStream sDout = new DataOutputStream(sBout);

sDout.wirteInt();

sDout.writeUTF();

....................

sBout.toByte() .

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

插入数据是:

Query q = QueryBuilder.builder("insert :friend :f_name :f_mobile :f_email: f_address ");

q.setString("f_name",friend.getName() );

q.setString("f_mobile", friend.getPhone());

q.setString("f_email", friend.getEmail());

q.setString("f_address", friend.getAddress());

q.execute();

 

1. 添加表格

create table_name column_1 column_2 column_3 ......

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。从事浏览器相关的开发工作。
 

0
相关文章