2012-05-04 3 views
2

RMS 레코드를 읽고 쓰는 J2ME 응용 프로그램을 하나 만들고 있습니다. 나는
레코드를 RMS에 읽고 쓸 수 있지만 지금 문제는
과 같이 accountNumber과 같은 값을 받아 레코드를 삭제하고 싶습니다.
RMS 레코드의 형식.RMS의 특정 레코드를 삭제 하시겠습니까?

101,ABC,12345,12345 

및 문자열 str은 다음 데이터를 포함합니다.

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

사용자가 accountNumber (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를 제거합니다. 그 후 레코드를 작성하면 다음에 추가되는 레코드는 0으로 인덱싱됩니다.

생각이 났을 때, 그 번호만큼 레코드를 삭제하고 싶습니다. 맞다면 그 내용으로 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); 
     } 
    } 
관련 문제