• J2ME读写数据RecordStore(RMS)简介


    原文地址:http://student.csdn.net/space.php?uid=76660&do=blog&id=6335

    一. RecordStore(RMS)简介
        javax.microedition.rms 这个包提供给J2ME Application一个小型的数据库, RecordStore就是这个包的核心。原则上在一个MIDlet中可以放置多个RecordStore,同一个MIDlet suite中可以共享同一个RecordStore进行存取,不同的MIDlet suite不能存取同一个MIDlet suite。
     
    它的诸多特性如下:  
      在MIDlet suite中每一个RecordStore的名称是唯一的,不能重复,而不同的MIDlet suite可以使用同名的RecordStore。
      创建RecordStore名称时,字母是区分大小写的,且名称字符串不能超过32个字符。
      
    基本存储读取模式:
        RecordStore由多条记录(Record)所组成。

        key1|content;key2|content;key2|content...
        就是 key|content pair, 这个pair算一条记录。

    二. 创建RecordStore(RMS)对象
        使用RecordStore.openRecordStore函数,打开一个存储对象并取得句柄rs,然后使用rs.addRecord向存储对象中添加记录,最后关闭存储对象rs.closeRecordStore,完成初始化过程。

    public void initRecord(){
    //--------------------------
    //--- Initialize RecordStore
    //--------------------------
    RecordStore rs = null;
    String[] strData
    = null;
    int n;
    try{
    rs
    = RecordStore.openRecordStore("history", true);
    strData
    = new String[]{""};

    // history.1 = history data

    n
    = strData.length - rs.getNumRecords();
    for (int i = (strData.length - n); i < strData.length; i ++){
    rs.addRecord(strData[i].getBytes(),
    0, strData[i].getBytes().length);
    }
    rs.closeRecordStore();

    }
    catch(Exception e){
    System.out.println(
    "RecInitErr: " + e.toString());
    if (rs != null){
    try{
    rs.closeRecordStore();
    }
    catch(Exception e2){}
    }
    }
    strData
    = null;
    }

    三. 存储RecordStore(RMS)对象
    需要一个索引ID和所需要存储的内容strData,这个过程需要把整个RMS打开,寻找拥有这个索引ID的record。如果找到了,就更新这个record; 如果没有,就新建立一个。

    参数String strName是存储对象名

    参数String strData是需要存储的字符串

    参数int intID是该字符的索引ID

    首先,判断存储对象是否存在,如果存在,使用rsWrite.setRecord方法来更新存储对象。

    public boolean writeRecord(String strName, String strData, int intID){
    //----------------------------
    //--- RecordStore的存储
    //----------------------------
    RecordStore rsWrite = null;
    try{
    rsWrite
    = RecordStore.openRecordStore(strName, true);
    byte[] bytWrite = strData.getBytes();
    if (rsWrite.getNumRecords() == 0){
    //--- RecordStore不存在,则生成之
    rsWrite.addRecord(bytWrite, 0, bytWrite.length);
    }
    else{
    //--- RecordStore更新
    rsWrite.setRecord(intID, bytWrite, 0, bytWrite.length);
    }
    rsWrite.closeRecordStore();
    return true;
    }
    catch(Exception e){
    if (rsWrite != null){
    try{
    rsWrite.closeRecordStore();
    }
    catch(Exception e2){}
    }
    return false;
    }
    }

    四. 读取RecordStore(RMS)对象
    只需要提供 索引ID, 然后打开 RMS 寻找拥有这个索引ID的record,如果找到了就重组成数据,不然就是没有这个record。

    参数String strName是读取对象名

    参数int intID是读取索引ID

    返回值String是需要读取的字符串

    public String readRecord(String strName, int intID){
    //----------------------------
    //--- RecordStore的读取
    //----------------------------
    RecordStore rsRead = null;
    try{
    rsRead
    = RecordStore.openRecordStore(strName, false);
    byte[] bytRead = rsRead.getRecord(intID);
    rsRead.closeRecordStore();
    return new String(bytRead);
    }
    catch(Exception e){
    if (rsRead != null){
    try{
    rsRead.closeRecordStore();
    }
    catch(Exception e2){}
    }
    return "";
    }
    }
  • 相关阅读:
    Delphi 实现C语言函数调用
    Delphi采用接口实现DLL调用
    select、poll、epoll之间的区别总结[整理]
    int 的重载
    qt 安装包生成2
    线程池的简单实现
    qt 安装包生成
    linux 下tftpf搭建
    2018C语言助教总结
    动态规划——最长子序列长度
  • 原文地址:https://www.cnblogs.com/ymmt/p/1837050.html
Copyright © 2020-2023  润新知