j2me + rms

Pessoal estou fazendo alguns testes, estou tendo um problema.
Qdo fecho o emulador os dados do meu RMS somem mesma coisa contece qdo minha app esta no celular é coisa simples adiciona normal mas se fechar a app ja erra, alguem pode me dar um help, abaixo meu programa:
Isto sempre funcionou mas agora comecou com este problema.

Grato.

[code]import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Vector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.*;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;

/**

  • @author lorenzi
    */
    public class firstRMS extends MIDlet implements CommandListener {

    private Display disp;
    private Form frm;
    private int number;
    private TextBox tbNumber;
    private Command cmSair;
    private Command cmIncluir;
    private Command cmVoltaForm;
    private RecordStore rsNumber;
    private RecordEnumeration reNumber;
    private Vector veNumber = new Vector();
    private String msg;

    public void startApp() {
    disp = Display.getDisplay(this);
    frm = new Form(“Bem vindo ao RMS”);
    cmSair = new Command(“Sair”, Command.EXIT, 1);
    cmIncluir = new Command(“Adicionar”, Command.ITEM, 2);
    cmVoltaForm = new Command(“Voltar”, Command.BACK, 1);
    frm.addCommand(cmSair);
    frm.addCommand(cmIncluir);
    frm.setCommandListener(this);
    tbNumber = new TextBox(“Lista de Cadastro”, null,600,TextField.ANY);
    tbNumber.addCommand(cmVoltaForm);
    tbNumber.setCommandListener(this);

     disp.setCurrent(tbNumber);
     setRms();
     mostraDados();
    

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void setRms(){
    try
    {
    rsNumber = RecordStore.openRecordStore(“dbNumber”, true);
    System.out.println(“Banco criado”);
    System.out.println("Banco: "+rsNumber.getName()); //nome do banco
    System.out.println("Registros: " + rsNumber.getNumRecords());

     }
     catch(Exception erro)
     {
        System.out.println("Erro no banco de dados");
     }
    

    }
    public void insere(){
    try{
    //responsavel pela manipulacao byte a byte
    //conjunto de dados e manipulo em bytes
    ByteArrayOutputStream bStream = new ByteArrayOutputStream();
    //fluxo de saida de dados, possibilita escrever em bites a bites
    DataOutputStream dStream = new DataOutputStream(bStream);
    dStream.writeUTF(“Numero: “);
    dStream.writeInt(number);
    //fluxo de saida de dados força para saida de memoria
    dStream.flush();
    //vetor para manipular byte a byte
    byte [] numeros = bStream.toByteArray();
    //adiciona no RMS
    rsNumber.addRecord(numeros,0,numeros.length);
    bStream.close();
    dStream.close();
    }
    catch(Exception e)
    {
    System.out.println(“Errroooo de inserir”);
    }
    }
    public void mostraDados(){
    try{
    ByteArrayInputStream inputStream = null;
    DataInputStream dataStream = null;
    //respositorio de dados = resultSet
    //primeiro filtro recordFilter
    //segundo ordenar lista
    //terceiro dados atualizados qdo deletar se for false porde mostrar
    reNumber = rsNumber.enumerateRecords(null, null, false);
    int id = 0;
    byte[] dados = null;
    veNumber.removeAllElements();
    //repeticao
    msg = “”;
    while (reNumber.hasNextElement())
    {
    id = reNumber.nextRecordId();
    veNumber.addElement(””+id);
    dados = rsNumber.getRecord(id);
    //inicializa com o valor de dados byte a byte
    inputStream = new ByteArrayInputStream(dados);
    //iniciliaza os caracteres com o retorno do inputStream
    dataStream = new DataInputStream(inputStream);

            msg =  msg + dataStream.readUTF()+ " - " + dataStream.readInt() + "\n";
         }
         if (msg == ""){
             msg = "Nenhum dado encontrado!";
         }
         tbNumber.setString(msg);
         inputStream.close();
         dataStream.close();
    
     }
     catch(Exception e)
     {
       System.out.println("Erro ao acessar dados!");
     }
    

    }
    public void commandAction(Command c, Displayable d) {
    if (c == cmSair){
    destroyApp(true);
    notifyDestroyed();
    }else
    if (c == cmIncluir){
    for (int i = 0;i < 10; i++){
    number = i;
    insere();
    }
    mostraDados();
    disp.setCurrent(tbNumber);
    }else
    if (c == cmVoltaForm){
    disp.setCurrent(frm);
    }

    }
    }
    [/code]

acredito que o problema esteja no metodo inserir()… quando vc executa o programa ele grava normal no armazem e quando sai e volta ele sumiu. mas eles nao sumiram nao!!! eles estao lá, o erro tá no “indice” que vc está lendo quando volta a a executar a MIDlet, vc esta lendo um indice lá no final que esta vazio (null) , vc precisa volta o indice para o inicio e ler todo o armazem de dados. blz!!!

Opas pode ser mais claro, nao consegui entender a jogada?

OK! A PRIMEIRA VEZ QUE VC RODOU SEU APLICATIVO O SISTEMA INTERNO DO RMS ESCREVEU E LEU TODOS OS DADOS DESDE O INICIO “1” ATE O FIM “<10”, UM EXEMPLO, COM ISSO SEU IDICE FICOU IGUAL A 10. AGORA QUANDO VC RODA O APLICATIVO O RMS LE O ULTIMO INDICE DO VETOR QUE POR SINAL ESTA VAZIO. ISSO DA A FALSA IMPRESSAO QUE NAO TEM NADA ARMAZENADO. BLZ! JAVA POWERED

Sim entendi, mas como resolvo este problema para ficar tudo no mesmo metodo, sempre que inicio pela primeira vez ele entra no meu catch, da erro de acesso aos dados, mas queria ficar com um unico metodo de leitura, desta nameira nao consigo ??

OLHA RMS GOSTO DE TRABALHAR COM O LIVRO DO “MOU CHOW” ELE FAZ AS COISAS BEM SEPARADAS VARIOS METODOS, AS VEZES TENTAMOS SIMPLIFICAR AS COISAS E NAO SAEM COMO ESPERADO, ESSES CARAS SAO PROFISSIONAIS PRECISAMOS CONFIAR NELES, MAS JA CONSEGUI INSERIR E GRAVAR DADOS NO RMS SEM AUXILIO DE VETORES, TENTA VER O LIVRO DO MOU CHOW. BLZ.

Opa Dj++, vc poderia fazer um teste pra min ai, so executar este meu codigo ja revi ele varias x, e testei alguns outros exemplos na internet todos eles sem sucesso, sempre que fecho o emulador os dados somem, vc poderia copiar meu código e rodar somente para verificar se os dados permancen ou não, estou achando que pode ser problema no meu ambiente.

Ate testei um exemplo de uma agenda que achei na net e acontece mesma coisa.

Grato.

opa desculpa a demora, mas é q eu queria ter certeza, olha so eu uso o eclipse ME e ironicamente ta funcionando normal seu codigo agora, bem parece q o problema é interno, tenta instalar novamente a IDE […] java powered

Mas vc nao fez nenhuma alteração no codigo somente o meu codigo mesmo??

so por curiosidade rodei sem alterar nada e pra minha surpresa funcionou normal, apareceram todos os dados,

mudando de assunto vc conhece o Polish j2me

Nao conheco nao, mas qdo vc fechou o emulador e abriu novamente os dados estavam la??
Acho que vou pro eclipse entao, cara faz uma semana que to me batendo nesse negocio ai…

tava sim… normal

Muito bem senhores depois de muito me bater com este esquema ai resolvi o meu problema, instalei sun_java_wireless_toolkit-2.5.2_01-win e mudei para esta plataforma, plataforma default que o netbeans 6.9 instala nao da certo da erro o RMS nao acessa os dados apos fechar, entao apos intalar mudei no meu projeto a plataforma e pimba funcionou de primeira, fica ai a dica pro pessoal que precisar, valeu e obrigado.

blz, mt bom. mas vc nao gosta do eclipse…

Sim gosto e uso o eclipse, mas dou aula de j2me e tem de ser no netbeans, eu usava a versao 6.5 sem problemas ai migrei pra 6.9 e começou a dar os pane, por isso nao consegui entender o problema, pois os codigos funcionavam…

Mas o eclipse é bem mais estavel que o netbeans

to montando um grupo de desenvolvimento de games. abri um topico no forum, sobre metodo para empurrar caixas, coloquei um video do 1º projeto, gostaria de sua opiniao… vc pode dar uma olhada! desde ja agradeço. java powered