Erro RMS j2me

07/09/2009

1

O programa faz uma lista de compras e quando clico em adicionar o item na lista, gostaria q tb gravasse na memoria do celular.
Ele até grava, porém somente uma vez. De inicio ele já dá o erro java.lang.NullPointerException: 0 q vem do metodo leBD(); Depois tentando deletar java.lang.ArrayIndexOutOfBoundsException.
Não estou conseguindo achar erros por isso pesso a ajuda de vcs.
A finalidade é enviar e receber esta lista via bluetooth para j2se. Poderiam me ajudar com alguma dicas?
Se quiser o programa completo só pedir. Obrigado
Abaixo vai o cria , insere , deleta e le. Qualquer erro estou disposto a ouvir pois é minha primeira aplicação.
Ele pega as informações de 3 textField (produto,quantidade,preco) e coloca num list.

public void criaBD(){   
    try{   
        rslista = RecordStore.openRecordStore("bdlista", true);   
        System.out.println("Nome do Banco "+rslista.getName()+   
                       "\nNúmero de registros = "+rslista.getNumRecords()+   
                       "\nEspaço ocupado = "+rslista.getSize()+   
                       "\nEspaço disponível = "+rslista.getSizeAvailable());   
    }catch(Exception e){   
        System.out.println("Não foi possível criar o BD: "+e);   
    }   
  
}   
  
public void insereDado(){   
    try{   
        ByteArrayOutputStream bStream = new ByteArrayOutputStream(); //manipulação byte a byte   
        DataOutputStream dStream = new DataOutputStream(bStream); //fluxo q pega bytes e transforma em dados   
        dStream.writeUTF(textField.getString());   
        dStream.writeUTF(textField2.getString());   
        dStream.writeUTF(textField1.getString());   
        dStream.flush(); //força escrever na memoria   
        byte [] dados = bStream.toByteArray(); //recebe e transforma em array   
        if (flag == true)   
            rslista.addRecord(dados, 0,dados.length); //grava de 0 bytes ate o tamanho total da String   
        else  
            rslista.setRecord(Integer.parseInt(vetRegistro.elementAt(list.getSelectedIndex()).toString()), dados, 0, dados.length);   
        bStream.close();   
        dStream.close();   
  
    }catch(Exception erro){   
        System.out.println("Erro ao inserir dados. "+erro);   
    }   
}   
  
public void leBD(){   
    try{   
        while (list.size() >0){   
            list.delete(0);} //limpar a lista   
        ByteArrayInputStream iStream = null;   
        DataInputStream diStream = null;   
        relista = rslista.enumerateRecords(null, null, false); //pega os registros do bd (igual ResultSet)   
        int id = 0;   
        byte[] dados = null;   
        vetRegistro.removeAllElements();   
  
        while (relista.hasNextElement()){              
            id = relista.nextRecordId(); //pega a posição dos registros   
            vetRegistro.addElement(""+id);   
            dados = rslista.getRecord(id);   
            iStream = new ByteArrayInputStream(dados); //vai iniciar byte por byte   
            diStream = new DataInputStream(iStream); // pega os bytes do iStream e transforma em dados   
            list.append (diStream.readUTF()+" - ("+diStream.readUTF()+") - R$ "+diStream.readUTF(),null);   
        }   
       iStream.close();   
       diStream.close();   
    }catch(IOException erro){   
       System.out.println("Erro io dados. "+erro);   
    }catch (Exception e){   
        System.out.println("Erro lendo dados. "+e);   
    }   
}   
  
 public void deletar(){   
     try{   
         int indice = list.getSelectedIndex();   
         rslista.deleteRecord(Integer.parseInt(vetRegistro.elementAt(indice).toString()));   
         leBD();   
  
     }catch(Exception erro){   
         System.out.println("Não conseguiu deletar. "+erro);   
     }   
 }  
 



Responder

Posts

09/09/2009

Dyego.carmo

Cole aqui o Excelop COMPLETO...


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira