J2me RMS存储大容量数据 源码
2009-05-28 20:23
489 查看
RMS类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
import com.sinovoice.tools.CommandHelper;
import javax.microedition.rms.InvalidRecordIDException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;
/**
*
* @author liuqinan
*/
public class RMS implements RecordComparator {
public static final byte DB_RESULT_NO_ERROR = 0x00;
public static final byte DB_RESULT_NOT_FOUND = 0x01;
public static final byte DB_RESULT_NOT_OPEN = 0x02;
public static final byte DB_RESULT_FULL = 0x03;
public static final byte DB_RESULT_INVALID_ID = 0x05;
public static final byte DB_RESULT_SECURITY = 0x06;
public static final byte DB_RESULT_EXCEPTION = 0x07;
private String m_sRMSName = "";
private byte m_bException = 0;
public RMS(String sPath){
m_sRMSName = sPath;
}
/**
* 保存数据
* @param data
* @return
*/
public byte addRecord(byte[] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.addRecord(data, 0, data.length);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 保存数据
* @param data
* @return
*/
public byte addRecord(byte[][] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
for (int i = 0; i < data.length ; i ++){
rs.addRecord(data[i], 0, data[i].length);
}
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 更新�?��数据
*/
public byte updateRecord(int id, byte[] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.setRecord(id, data, 0, data.length);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 删除�?��数据记录
*/
public byte deleteRecord(int id){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.deleteRecord(id);
} catch (InvalidRecordIDException ex){
m_bException = DB_RESULT_INVALID_ID;
ex.printStackTrace();
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 删除�?���?
* @return
*/
public byte removeStore(){
RecordStore rs = null;
try {
RecordStore.deleteRecordStore(m_sRMSName);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
return m_bException;
}
}
/**
* 得到�?��记录的数�?
*/
public byte[] getData(int index){
byte[] data = null;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
data = rs.getRecord(index);
rs.closeRecordStore();
} catch (InvalidRecordIDException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_INVALID_ID;
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_OPEN;
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_FOUND;
} catch (RecordStoreException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_EXCEPTION;
} finally {
return data;
}
}
/**
* 得到�?��的数据记�?
* @return
*/
public byte[][] getAllData(){
byte[][] data = null;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
int total = rs.getNumRecords();
data = new byte[total][];
RecordEnumeration enumeration = rs.enumerateRecords(null, this, true);
for (int i = 0; i < total; i ++){
data[i] = rs.getRecord(enumeration.nextRecordId());
}
rs.closeRecordStore();
} catch (InvalidRecordIDException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_INVALID_ID;
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_OPEN;
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_FOUND;
} catch (RecordStoreException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_EXCEPTION;
} finally {
return data;
}
}
/**
* 比较
* @param arg0
* @param arg1
* @return
*/
public int compare(byte[] arg0, byte[] arg1) {
int num1 = this.readRecord(arg0);
int num2 = this.readRecord(arg1);
int type = 0;
if (num1 > num2) {
type = FOLLOWS;
} else if (num1 < num2) {
type = PRECEDES;
} else {
type = EQUIVALENT;
}
return type;
}
/**
* 读取ID�?
* @param data
* @return
*/
private int readRecord(byte[] data) {
int id = 0;
CommandHelper cmd = new CommandHelper((data));
id = cmd.getInt(2);
return id;
}
/**
* rms的异�?
* @return
*/
public byte getRMSException(){
return m_bException;
}
/**
* 得到要存储的下一条记录rid
*/
public int getNextID(){
int rid = 0;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rid = rs.getNextRecordID();
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
if (rid <= 0){
rid = 1;
}
return rid;
}
}
public int getTotal() {
int number = 0;
try {
RecordStore rs = RecordStore.openRecordStore(m_sRMSName, true);
number = rs.getNumRecords();
rs.closeRecordStore();
} catch (RecordStoreFullException ex) {
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return number;
}
}
DataMgr类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
import java.util.Vector;
/**
*
* @author liuqinan
*/
public class DataMgr {
private String m_sPath;
public byte m_nException;
public DataMgr(String sPath){
m_sPath = sPath;
}
public boolean addRecord(Data data){
if (data == null){
return false;
}
RMS rms = new RMS(m_sPath);
m_nException = rms.addRecord(data.toByteArray());
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public boolean updateRecord(Data data){
if (data == null){
return false;
}
RMS rms = new RMS(m_sPath);
m_nException = rms.updateRecord(data.getRMSID(), data.toByteArray());
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public int getTotalCnt(){
RMS rms = new RMS(m_sPath);
return rms.getTotal();
}
public byte[][] getAllData(){
RMS rms = new RMS(m_sPath);
return rms.getAllData();
}
public byte[] getData(int nIndex){
RMS rms = new RMS(m_sPath);
byte[] nData = rms.getData(nIndex);
m_nException = rms.getRMSException();
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return nData;
}
return null;
}
public boolean delData(int nIndex){
RMS rms = new RMS(m_sPath);
m_nException = rms.deleteRecord(nIndex);
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public boolean delAllData(){
RMS rms = new RMS(m_sPath);
m_nException = rms.removeStore();
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public int getNextID(){
RMS rms = new RMS(m_sPath);
return rms.getNextID();
}
}
Data类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
/**
*
* @author liuqinan
*/
public abstract class Data {
protected int m_nRMSID;
public abstract void setData(byte[] nData);
public abstract byte[] toByteArray();
public int getRMSID(){
return m_nRMSID;
}
public void setRMSID(int nID){
m_nRMSID = nID;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
import com.sinovoice.tools.CommandHelper;
import javax.microedition.rms.InvalidRecordIDException;
import javax.microedition.rms.RecordComparator;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreFullException;
import javax.microedition.rms.RecordStoreNotFoundException;
import javax.microedition.rms.RecordStoreNotOpenException;
/**
*
* @author liuqinan
*/
public class RMS implements RecordComparator {
public static final byte DB_RESULT_NO_ERROR = 0x00;
public static final byte DB_RESULT_NOT_FOUND = 0x01;
public static final byte DB_RESULT_NOT_OPEN = 0x02;
public static final byte DB_RESULT_FULL = 0x03;
public static final byte DB_RESULT_INVALID_ID = 0x05;
public static final byte DB_RESULT_SECURITY = 0x06;
public static final byte DB_RESULT_EXCEPTION = 0x07;
private String m_sRMSName = "";
private byte m_bException = 0;
public RMS(String sPath){
m_sRMSName = sPath;
}
/**
* 保存数据
* @param data
* @return
*/
public byte addRecord(byte[] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.addRecord(data, 0, data.length);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 保存数据
* @param data
* @return
*/
public byte addRecord(byte[][] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
for (int i = 0; i < data.length ; i ++){
rs.addRecord(data[i], 0, data[i].length);
}
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 更新�?��数据
*/
public byte updateRecord(int id, byte[] data){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.setRecord(id, data, 0, data.length);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 删除�?��数据记录
*/
public byte deleteRecord(int id){
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rs.deleteRecord(id);
} catch (InvalidRecordIDException ex){
m_bException = DB_RESULT_INVALID_ID;
ex.printStackTrace();
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return m_bException;
}
}
/**
* 删除�?���?
* @return
*/
public byte removeStore(){
RecordStore rs = null;
try {
RecordStore.deleteRecordStore(m_sRMSName);
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
return m_bException;
}
}
/**
* 得到�?��记录的数�?
*/
public byte[] getData(int index){
byte[] data = null;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
data = rs.getRecord(index);
rs.closeRecordStore();
} catch (InvalidRecordIDException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_INVALID_ID;
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_OPEN;
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_FOUND;
} catch (RecordStoreException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_EXCEPTION;
} finally {
return data;
}
}
/**
* 得到�?��的数据记�?
* @return
*/
public byte[][] getAllData(){
byte[][] data = null;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
int total = rs.getNumRecords();
data = new byte[total][];
RecordEnumeration enumeration = rs.enumerateRecords(null, this, true);
for (int i = 0; i < total; i ++){
data[i] = rs.getRecord(enumeration.nextRecordId());
}
rs.closeRecordStore();
} catch (InvalidRecordIDException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_INVALID_ID;
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_OPEN;
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_NOT_FOUND;
} catch (RecordStoreException ex) {
ex.printStackTrace();
m_bException = DB_RESULT_EXCEPTION;
} finally {
return data;
}
}
/**
* 比较
* @param arg0
* @param arg1
* @return
*/
public int compare(byte[] arg0, byte[] arg1) {
int num1 = this.readRecord(arg0);
int num2 = this.readRecord(arg1);
int type = 0;
if (num1 > num2) {
type = FOLLOWS;
} else if (num1 < num2) {
type = PRECEDES;
} else {
type = EQUIVALENT;
}
return type;
}
/**
* 读取ID�?
* @param data
* @return
*/
private int readRecord(byte[] data) {
int id = 0;
CommandHelper cmd = new CommandHelper((data));
id = cmd.getInt(2);
return id;
}
/**
* rms的异�?
* @return
*/
public byte getRMSException(){
return m_bException;
}
/**
* 得到要存储的下一条记录rid
*/
public int getNextID(){
int rid = 0;
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(m_sRMSName, true);
rid = rs.getNextRecordID();
} catch (RecordStoreFullException ex) {
m_bException = DB_RESULT_FULL;
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
m_bException = DB_RESULT_NOT_FOUND;
ex.printStackTrace();
} catch (RecordStoreException ex) {
m_bException = DB_RESULT_EXCEPTION;
ex.printStackTrace();
} finally {
try {
rs.closeRecordStore();
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
if (rid <= 0){
rid = 1;
}
return rid;
}
}
public int getTotal() {
int number = 0;
try {
RecordStore rs = RecordStore.openRecordStore(m_sRMSName, true);
number = rs.getNumRecords();
rs.closeRecordStore();
} catch (RecordStoreFullException ex) {
ex.printStackTrace();
} catch (RecordStoreNotFoundException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return number;
}
}
DataMgr类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
import java.util.Vector;
/**
*
* @author liuqinan
*/
public class DataMgr {
private String m_sPath;
public byte m_nException;
public DataMgr(String sPath){
m_sPath = sPath;
}
public boolean addRecord(Data data){
if (data == null){
return false;
}
RMS rms = new RMS(m_sPath);
m_nException = rms.addRecord(data.toByteArray());
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public boolean updateRecord(Data data){
if (data == null){
return false;
}
RMS rms = new RMS(m_sPath);
m_nException = rms.updateRecord(data.getRMSID(), data.toByteArray());
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public int getTotalCnt(){
RMS rms = new RMS(m_sPath);
return rms.getTotal();
}
public byte[][] getAllData(){
RMS rms = new RMS(m_sPath);
return rms.getAllData();
}
public byte[] getData(int nIndex){
RMS rms = new RMS(m_sPath);
byte[] nData = rms.getData(nIndex);
m_nException = rms.getRMSException();
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return nData;
}
return null;
}
public boolean delData(int nIndex){
RMS rms = new RMS(m_sPath);
m_nException = rms.deleteRecord(nIndex);
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public boolean delAllData(){
RMS rms = new RMS(m_sPath);
m_nException = rms.removeStore();
if (m_nException == RMS.DB_RESULT_NO_ERROR){
return true;
}
return false;
}
public int getNextID(){
RMS rms = new RMS(m_sPath);
return rms.getNextID();
}
}
Data类:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.sinovoice.rms;
/**
*
* @author liuqinan
*/
public abstract class Data {
protected int m_nRMSID;
public abstract void setData(byte[] nData);
public abstract byte[] toByteArray();
public int getRMSID(){
return m_nRMSID;
}
public void setRMSID(int nID){
m_nRMSID = nID;
}
}
相关文章推荐
- J2me RMS存储大容量数据
- Fresco源码解析 - DataSource怎样存储数据
- 看懂Qt源代码-Qt源码的对象数据存储
- hadoop单个数据节点的不同存储路径的存储策略源码分析
- Mysql单文件存储删除数据Bug文件容量不会减少
- android5.0源码开发之NVRam存储,恢复出厂设置数据不被擦除--上篇
- Android 判断SD卡是否存在及容量查询 分类: Android数据存储 2014-06-20 13:32 66人阅读 评论(0) 收藏
- 数据存储容量大小的描述
- 快速提示 – 增加嵌套 VSAN 数据存储的容量
- android平台下提高sqlite大容量数据存储效率
- leveldb源码剖析--key-value形式的Block块中的数据存储格式
- Android 小项目之--数据存储【Network】(附源码)
- Android 小项目之--数据存储【Files】(附源码)
- Hadoop如何组织中间数据的存储和传输(源码级分析)1
- 数据结构与算法学习(二)链式存储结构LinkedList源码分析
- Fresco源码解析 - DataSource怎样存储数据
- SQL Server 使用WriteText 存储大容量数据
- Sql Server 删除数据表的存储过程,直接能用!(源码带说明)
- 动手改造Ibatis,使其支持文件系统存储数据列 之 源码下载编译和SqlMapConfig解析
- 看懂Qt源代码-Qt源码的对象数据存储