2012-05-04 147 views
2

我正在創建一個讀取/寫入RMS記錄的J2ME應用程序。我能夠讀取和寫入
記錄在RMS中,但現在的問題是我想通過接受一些值刪除記錄
accountNumber
RMS記錄的格式。刪除RMS中的特定記錄?

101,ABC,12345,12345 

和String str包含以下數據。

String str=accountSrNumber +","+ name +","+ balance +","+ TextDeposit; 
deleteRecStore(str,accountSrNumber); 

而我需要接受來自用戶的賬號(101)並需要刪除此記錄。
這是我的刪除方法。

public void deleteRecStore(String str, String accNumber121) // 
{ 
    int s=str.indexOf(accNumber121);  
    System.out.println("index in delete function"+s);   
      if(s==0) 
      { 
      try{ 

       rs.deleteRecord(s); 
        // RecordStore.deleteRecordStore(REC_STORE); 
        System.out.println("record delete successfully"); 
       } 
       catch (Exception e) 
       {} 
    } 
} 

我試圖使用方法rs.deleteRecord(s)RecordStore.deleteRecordStore(REC_STORE);兩種。
但沒有幫助。

回答

4

你總是刪除記錄0,這是第一個記錄,這是一個壞主意。 例如,如果您添加兩條記錄並刪除它們,並添加另一條記錄,則它將被索引爲2,因此您必須調用deleteRecord(2)將其刪除。 方法deleteRecordStore()刪除整個recordStore(其中包含記錄) - 之後,如果創建一個,下一個添加的記錄將被索引爲零。

如果我有這個想法,你想通過它的acoountNumber刪除一條記錄。 如果我是對的,你需要通過它的內容找到recordID。代碼可能看起來像這樣(可能有錯誤,沒有測試,但這個想法很重要):

public void deleteRecStore(String accNumber121) { 
     RecordEnumeration e = rs.enumerateRecords(); 
     int found = -1; 
     while (e.hasMoreElements()) { 
      int id = e.nextRecordId(); 
      String next = new String(e.nextRecord()); 
      if (next.startsWidth(accNumber121)) { 
       found = id; 
      } 
     } 
     if (found == -1) { 
      System.out.println("not found!"); 
     } else { 
      rs.deleteRecord(found); 
     } 
    }