实战J2ME中RMS开发
创始人
2024-04-05 12:01:35
0

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简介篇

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...