Проблема с обновлением J2ME RecordStore, удалением - PullRequest
1 голос
/ 13 августа 2011

Я создаю Список, показывающий данные из RecordStore. Я попытался обновить запись и заново отобразить список (повторно открыть тот же RecordStore), но обновленный элемент не изменяется (по-прежнему содержат старые данные).
Я также попытался удалить элемент, и этот элемент все еще отображается в списке.
Я запускаю программу с помощью эмулятора из NetBeans 7.0 с Java ME SDK 3.0

Это код для обновления записи

public void updateClient(Client cl) throws Exception{
        RecordStore rs=RecordStore.openRecordStore(String.valueOf(clientsStoreKey), true);
        int recNum=rs.getNumRecords();
        if (recNum>0){
            RecordEnumeration renum=rs.enumerateRecords(null, null,false);
            while(renum.hasNextElement()){
                int id = renum.nextRecordId();
                byte[] buff=rs.getRecord(id);
                Client temp=Client.createFrom(buff);
                if(temp.clientId.compareTo(cl.clientId)==0){  
                    temp.firstName=cl.firstName;
                    temp.lastName=cl.lastName;
                    temp.city=cl.city;
                    temp.state=cl.state;
                    temp.company=cl.company;
                    temp.phone=cl.phone;
                    ByteArrayOutputStream bos=new ByteArrayOutputStream();
                    DataOutputStream dos=new DataOutputStream(bos);
                    temp.writeTo(dos);
                    byte[] sData=bos.toByteArray();                  
                    rs.setRecord(id, sData, 0, sData.length);
                    dos.close();
                    bos.close();  
                    break;
                }
            }
            renum.destroy();
        }
        rs.closeRecordStore();       

    }  

А это код для получения записей

public Vector getClients()
    throws Exception{

        RecordStore rs=RecordStore.openRecordStore(String.valueOf(clientsStoreKey), true);
        int recNum=rs.getNumRecords();
        Vector cls=new Vector();

        if (recNum>0){
            RecordEnumeration renum=rs.enumerateRecords(null, null,false);
            while(renum.hasNextElement()){
                byte[] buff=renum.nextRecord();
                Client cl=Client.createFrom(buff);
                cls.addElement(cl);
            }
            renum.destroy();
        }
        rs.closeRecordStore();
        return cls;
    }

1 Ответ

0 голосов
/ 13 августа 2011

интересно - ваш код, связанный с хранилищем записей, выглядит для меня довольно хорошо.Есть ли вероятность некоторого сбоя в пользовательском интерфейсе, как, например, использование старого или неправильно обновленного экранного объекта?

Как вы отлаживаете свое приложение?Поскольку вы упоминаете эмулятор , System.out/println выглядит естественным выбором, не так ли?Я бы использовал его для вывода содержимого записи сразу после установки в updateClient и после получения в getClients

...