[J2ME] Problem z RMS

0

Witam

Piszę program, który ma przechowywać pewien zestaw danych wprowadzonych przez użytkownika na stałe [ tzn kiedy wyłączę, a następnie włączę program na telefonie dane tam będą ]. Napisałem/ znalazłem w necie [ przekopiowałem ze swojego starego programu, nie wiem skąd to mam :) ] dwie takie metody:

 public void writeRecord(String str, RecordStore type) throws RecordStoreException {
        byte[] rec = str.getBytes();
        System.out.println("Rec Length "+rec.length);
        try {
            System.out.println("1 try:");
            type.addRecord(rec, 0, rec.length);
            } catch (Exception e) {
            System.out.println("Write record error: " + e);
        }
    }
   public void readRecords(RecordStore type) {
        try {
            System.out.println("readRecords in\n" + " num of rec " + type.getNumRecords());
        } catch (RecordStoreNotOpenException ex) {
            ex.printStackTrace();
        }
        try {

            byte[] recData = new byte[5];
            int len;

            for (int i = 1; i <= type.getNumRecords(); i++) {
                if (type.getRecordSize(i) > recData.length) {

                    recData = new byte[type.getRecordSize(i)];
                }

                len = type.getRecord(i, recData, 0);
                System.out.println("Record #" + i + ": " + new String(recData, 0, len));
                System.out.println("------------------------------");
            
            }
       } 

jak się łatwo domyślić readRecords odczytuje dane, a writeRecords zapisuje. Wszystko działa do momentu restartu programu. Później readrecords zwraca 0 przy ilości rekordów w pamięci :(. Jakieś pomysły?

0

A zamykasz RecordStore po wykonaniu operacji?

0
 try {
                database_basic();
                writeRecord(nad.getString(nad.getSelectedIndex()), rs);
                writeRecord(wacha.getString(wacha.getSelectedIndex()), rs);
                writeRecord(poj.getString(poj.getSelectedIndex()), rs);
                writeRecord(rocznik.getString(rocznik.getSelectedIndex()), rs);
                rs.closeRecordStore();
            } catch (RecordStoreException ex) {
                ex.printStackTrace();
            } 

to jest kod odpowiedzialny za zapis + zamknięcie sklepu na koniec :)

0

A jak otwierasz RMS?

0
 public void database_basic(){
    System.out.println("Database basic in");
        try {

            rs = RecordStore.openRecordStore("Dane Auta", true);
            System.out.println(rs.getNumRecords());
        } catch (RecordStoreException ex) {
            ex.printStackTrace();
        }
}

dodam, że gdy dla argumentu false program się wykrzacza

0

A to jest problem na emulatorze czy na telefonie?

0

na emulatorze, na telefonie nie chce odpalić [ sprawdzałem na razie tylko na telefonie z wm 6 ]

0

A to raczej standard że nie chce działać na emulatorze. Spróbuj ściągnąć jakąś inną wersję może to pomoże.

0

sprawdziłem na nokii 6303 classic i śmiga, zapisuje dane aż furczy = )

1 użytkowników online, w tym zalogowanych: 0, gości: 1