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
