Johil,

Olhe este tr�s links que voc� vai achar o que precisa para trabalhar
com RMS de forma "eficiente":

1. http://www.microjava.com/developer/fss/db?content_id=1622
2.
http://www.corej2me.com/DeveloperResources/sourcecode/rms/rwStreams/in
dex.shtml
3. http://wireless.java.sun.com/midp/ttips/rmsefficient/

Atenciosamente,
Daniel Wildt
-------------------------------------------
 Daniel Wildt - Gerente de Desenvolvimento
 Trevisan Tecnologia
-------------------------------------------
 Borland Delphi Certified Developer
 Borland Delphi Certified Instructor
-------------------------------------------
 Mail: [EMAIL PROTECTED]
 ICQ#: 17810666
 Site: http://www.geocities.com/dwildt2
-------------------------------------------

----- Original Message -----
From: Giuliano Costa <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, February 05, 2003 9:49 PM
Subject: RES: [j2me-list] RecordStore


Johil, eu te aconselho a trabalhar com ByteArrayOutputStream no
processo de
persistencia, pois facilita a utilizacao do RMS. Abaixo eu mando 3
exemplos
que fiz para um modelo de persistencia. Qualquer duvida da um toque...



=====================================================
import java.io.*;
/**
*
* @author  giuliano
* @version
*/
public interface Persistencia

  void materializar(byte[] data)throws IOException;

  byte[] gravar()throws IOException;
}
=====================================================
import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.rms.*;
/**
*
* @author  giuliano
* @version
*/
public class Mensagem implements
sistencia{ 
  private String de; 
  private String para; 
  private String assunto; 
  private String mensagem; 
  private String data; 


  public String getDe(){ 
      return this.de; 
  } 
  public String getPara(){ 
      return this.para; 
  } 
  public String getAssunto(){ 
      return this.assunto; 
  } 
  public String getMensagem(){ 
      return t
his.mensagem;
  }
  public String
Data(){ 
      return this.data; 
  } 


  public void setDe(String de){ 
      this.de = de; 
  } 
  public void setPara(String para){ 
      this.para = para; 
  } 
  public void setAssunto(String assunto){ 
      this.assunto = assunto; 
  } 
  public void setMensagem(String msg){ 
      this.mensagem = msg; 
  } 
  public void setData(String data){ 
      this.data = data; 
  } 


  public byte[] gravar() throws IOException { 
      ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 
      DataOutputStream dOut = new DataOutputStream(bOut); 


      dOut.writeUTF(this.getDe()); 
      dOut.writeUTF(this.getPara()); 
      dOut.writeUTF(this.getAssunto()); 
      dOut.writeUTF(this.getMensagem()); 
      dOut.writeUTF(this.getData()); 


      dOut.flush(); 


      return bOut.toByteArray(); 


  } 
  public void materializar(byte[] data) throws IOException { 
      ByteArrayInputStream bOut = new ByteArrayInputStream(data); 
      DataInputStream dOut = new DataInputStream(bOut); 


      this.de = dOut.readUTF(); 
      this.para = dOut.readUTF(); 
      this.assunto = dOut.readUTF(); 
      this.mensagem = dOut.readUTF(); 
      this.data = dOut.readUTF(); 
  } 
} 
==================================================================== 
import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 
import javax.microedition.rms.*; 
import java.util.Vector; 
import java.io.*; 

/** 
* 
* @author  giuliano 
* @version 
*/ 
public class TestMensagem extends MIDlet implements CommandListener{ 
  private Command cmdGravar, cmdRet; 
  private Mensagem msg = new Mensagem(); 
  private Vector iMsgs = new Vector(); 
  private Form form; 
  private Display display = Display.getDisplay(this); 
  private TextField txtDe, txtPara, txtAssunto, txtMsg, txtData; 
  private RecordStore rs; 
  private RecordEnumeration enum; 
  private static final String NOME_DB = "MENSAGENS"; 
  private TestAle
rt alerta = new TestAlert();
  private ChoiceGroup cgrMsgs = new
ChoiceGroup("Mensagens",Choice.EXCLUSIVE);


private void
tanceTextFields(){ 
      this.txtDe = new TextField("De: ", "", 20, TextField.ANY); 
      this.txtPara = new TextField("Para: ", "", 20, TextField.ANY); 
      this.txtAssunto = new TextField("Assunto: ", "", 20, TextField.ANY); 
      this.txtMsg = new TextField("Mensagem: ", "", 20, TextField.ANY); 
      this.txtData = new TextField("Data: ", "", 20, TextField.ANY); 
  } 
private void carregaDados(RecordStore rcs){ 
     try{ 
     file://this.openDB(rs); 
     rcs = RecordStore.openRecordStore(NOME_DB,true); 
     this.enum = rcs.enumerateRecords(null, null, false); 
     byte[] data; 
     while(enum.hasPreviousElement()){ 
         Mensagem tmpMsg = new Mensagem(); 
         data = enum.previousRecord(); 
         tmpMsg.materializar(data); 
         this.iMsgs.addElement(tmpMsg); 

         tmpMsg = null;
     }
     this.closeDB(rs);
     }catch(Exception

          System.out.println(e.getMessage());
     }
     long ini = System.currentTimeMillis();
     for(int i = 0; i < iMsgs.size();
){ 
          System.out.println("Init ================================"); 
          System.out.println("De: " + ((Mensagem)iMsgs.elementAt(i)).getDe()); 
          System.out.println("Para: " + ((Mensagem)iMsgs.elementAt(i)).getPara()); 
          System.out.println("Assunto: " + 
((Mensagem)iMsgs.elementAt(i)).getAssunto()); 
          System.out.println("Mensagem: " + 
((Mensagem)iMsgs.elementAt(i)).getMensagem()); 
          System.out.println("Data: " + ((Mensagem)iMsgs.elementAt(i)).getData()); 
          System.out.println("End ================================"); 
     } 
     System.out.println(System.currentTimeMillis()-ini); 
     if(this.iMsgs.size() > 0) 
         this.iMsgs.removeAllElements(); 
} 
  private void apendaTextField(){ 
      form.append(this.txtDe); 
      form.append(this.txtPara); 
      form.append(this.txtAssunto); 

      form.append(this.txtMsg);
      form.append(this.txtData);
  }
  public
tMensagem(){ 
      this.form = new Form("Mensagem"); 
      this.cmdGravar = new Command("Gravar", Command.OK, 1); 
      this.cmdRet = new Command("Exibir", Command.BACK, 1); 
      this.form.setCommandListener(this); 
      this.form.addCommand(cmdGravar); 
      this.form.addCommand(cmdRet); 
      this.instanceTextFields(); 
      this.apendaTextField(); 
  } 
  public void startApp() { 
      this.display.setCurrent(form); 
  } 


  public void pauseApp() { 
  } 


  public void destroyApp(boolean unconditional) { 
  } 


  public void commandAction(Command cmd, Displayable dsp) { 
      if(cmd == cmdGravar){ 
          this.msg.setDe(txtDe.getString()); 
          this.msg.setPara(txtPara.getString()); 
          this.msg.setAssunto(txtAssunto.getString()); 
          this.msg.setMensagem(txtMsg.getString()); 
          this.msg.setData(txtData.getString()); 
          this.store(this.msg, this.rs); 
      }else if(cmd == this.cmdRet){ 
          this.carregaDados(this.rs); 
          this.display.setCurrent(alerta); 
      } 
  } 
  private void openDB(RecordStore rs){ 
      try{ 
          rs = RecordStore.openRecordStore(NOME_DB, true); 
      }catch(RecordStoreException e){ 
          e.getMessage(); 
      } 
  } 
  private void closeDB(RecordStore rs){ 
      if(rs != null){ 
          try{ 
              rs.closeRecordStore(); 
          }catch(RecordStoreException e){ 
              e.getMessage(); 
          } 
      } 
  } 
  private void store(Mensagem mens, RecordStore rcs){ 
      byte[] data; 
      long ini = System.currentTimeMillis(); 
      try{ 
          rcs = RecordStore.openRecordStore(NOME_DB,true); 
          data = mens.gravar(); 
          rcs.addRecord(data, 0, data.length); 
          this.closeDB(rcs); 
          System.out.println(System.currentTimeMillis()-ini); 
          file://rcs.deleteRecordStore(NOME_DB); 
      }catch(IO
Exception

          System.out.println(e.getMessage());
      }catch(RecordStoreNotOpenException

          System.out.println(e.getMessage());
      }catch(Exception

          System.out.println(e.getMessage());
      }
  }


}
=================================================================

-----Mensagem original-----
De: johil lopes [mailto:[EMAIL PROTECTED]]
Enviada em: quarta-feira, 5 de fevereiro de 2003 10:05
Para: [EMAIL PROTECTED]
Assunto: [j2me-list] RecordStore


Bom dia,

        Estou fazendo uma aplicagco simples na minha
empresa que consiste em gravar um relatsrio no palm
para ser consultada depois.

        Para gravar e ler estou utilizando a idiia das
classes do exemplo stock da SUN para RecordStore.

        Quando vou ler o registro eu utilizo a
seguinte expressco:

String registro="";

 if (re.hasNextElement())
  registro=new String (re.nextRecord()
);

        O problema i que o valor do registro vem com
sujeira nas duas primeiras caracteres da String,
alguem sabe o que esta acontecendo.
        Eu acho que i algo relacionado a conversco de
dados de bytes [] para String.

Desde ja,

Muito Obrigado,

Johil,

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.445 / Virus Database: 250 - Release Date: 21/01/2003


Responder a