Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lorenzi

[Resolvido] Duração RMS

Recommended Posts

Ola pessoal.

 

Me tirem uma duvida, estou testando um projeto com RMS, ele inclui normal , mostra ok so que qdo fecho o emulador ou fecho a aplicação no aparelho, esta informação nao esta mais disponivel no retorno, ou seja esta informação se mantem desde que eu nao feche o emulador ou a aplicação no aparelho.

 

Pergunto, isso nao deveria ser assim? o RMS nao deveria ser persistente?

 

Grato.

 

Abaixo meu codigo, talvez seja algum problema no meu ambiente, se alguem puder rodar ele pra me dizer como funciona ai fico grato.

 

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);
       }

   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido o problema é que com o emulador default do netbeans da problemas se você baixar o WTK e compilar com ela funciona normalmente fica ai a dica então no netbeans 6.9

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.