以前做过一个黑莓项目,记录一下,别忘记了。。

RecordStore可以看做是一个数据库,数据库里可以有多个表,但是每个表只能保存一条记录。

先写一个类,用来保存数据库里查询出来的数据:

 

 
  
  1. package rms;  
  2.  
  3. import java.io.ByteArrayInputStream;  
  4. import java.io.ByteArrayOutputStream;  
  5. import java.io.DataInputStream;  
  6. import java.io.DataOutputStream;  
  7.  
  8. public class RMSData {  
  9.     private String str1="";  
  10.     private String str2="";  
  11.  
  12.     public RMSData() {  
  13.     }  
  14.  
  15.     public RMSData(String _str1, String _str2) {  
  16.         this.str1 = _str1;  
  17.         this.str2 = _str2;  
  18.  
  19.     }  
  20.       
  21.     public RMSData(byte[] rec) {  
  22.         initRMSData(rec);  
  23.     }  
  24.  
  25.     public byte[] toBytes() {  
  26.         byte[] data = null;  
  27.         try {  
  28.             ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  29.             DataOutputStream dos = new DataOutputStream(baos);  
  30.             dos.writeUTF(str1);  
  31.             dos.writeUTF(str2);  
  32.             data = baos.toByteArray();  
  33.             baos.close();  
  34.             dos.close();  
  35.         } catch (Exception e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.         return data;  
  39.     }  
  40.  
  41.     public void initRMSData(byte[] rec) {  
  42.         ByteArrayInputStream bais = new ByteArrayInputStream(rec);  
  43.         DataInputStream dis = new DataInputStream(bais);  
  44.         try {  
  45. //rec字节数组中存放的两段信息,str1是表名,str2是此条记录的信息
  46.             str1 = dis.readUTF();  
  47.             str2 = dis.readUTF();  
  48.         } catch (Exception e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.     }  
  52.  
  53.     public String getStr1() {  
  54.         return str1;  
  55.     }  
  56.  
  57.     public String getStr2() {  
  58.         return str2;  
  59.     }  
  60.  
  61. }  

1.查询某库,某表下的全部记录:

 

 
  
  1. public static RMSData getRecord(String name, String content){
  2. //name看做是数据库名,content看做是表名 
  3.         RMSData result = new RMSData();  
  4.         RecordEnumeration re = null;  
  5.         try {  
  6.             RecordStore rs = RecordStore.openRecordStore(name, false);  
  7.             re = rs.enumerateRecords(nullnullfalse);  
  8.             int id=0;  
  9. //将所有的表中所有的记录全部取出来,然后循环每条记录来判断此条记录是不是content表中的,如果是则重新将此条
  10. //记录取出来。
  11.             for (int i = 0; i < BBRecordSet.getNumOfRecords(name); i++) {  
  12.                 int id2 = re.nextRecordId();  
  13.                 RMSData app = new RMSData(rs.getRecord(id2));  
  14.                 if (app.getStr1().trim().equals(content.trim())) {  
  15.                     id=id2;  
  16.                     break;  
  17.                 }  
  18.             }  
  19.             result = new RMSData(rs.getRecord(id));  
  20.             rs.closeRecordStore();  
  21.         } catch (Exception e) {  
  22.         }  
  23.         return result;  
  24.     } 

增加一条记录:

 

 
  
  1. public static void putRMS(String str1, String str2) throws RMSException {  
  2.         try {  
  3.             RMSData app = new RMSData("""");  
  4.             //先查询出RMSStoreName.App_storename此数据库中str1表中的记录  
  5.             app = BBRecordSet.getRecord(RMSStoreName.App_storename, str1);  
  6.             if (app.getStr1().equals(str1)) {//如果记录已存在  
  7.                 int id = BBRecordSet.getIndex(RMSStoreName.App_storename, str1);//查询出str1表中记录的id  
  8.                 BBRecordSet.setRecord(RMSStoreName.App_storename, id, str1,  
  9.                         str2);//保存记录,将原纪录替换掉  
  10.             } else {//如果记录不存在  
  11.                 BBRecordSet.addRecord(RMSStoreName.App_storename, str1, str2);  
  12.             }  
  13.         } catch (Exception e) {  
  14.             throw new RMSException();  
  15.         }  
  16.     } 

基本就这些