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;
}
}