2

RMS レコードを読み書きする J2ME アプリケーションを作成しています。RMS でレコードを読み書きすることはできますが、問題は、 の ような
値を受け入れてレコードを削除することです。 RMS レコードの形式。
accountNumber

101,ABC,12345,12345   

および String 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

1 に答える 1

4

最初のレコードであるレコード 0 を常に削除しますが、これは悪い考えです。たとえば、2 つのレコードを追加して削除し、別のレコードを追加すると、インデックスが 2 になるため、deleteRecord(2) を呼び出して削除する必要があります。メソッド deleteRecordStore() は (レコードを含む) recordStore 全体を削除します。その後、レコードを作成すると、次に追加されるレコードのインデックスはゼロになります。

思いついた場合は、acountNumber でレコードを削除します。私が正しければ、その内容で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);
        }
    }
于 2012-05-04T18:08:22.867 に答える