Rms-j2me

Pessoal, estou com uma duvida básica. Pode até parecer ridícula, pois estou começando a estudar o J2ME.

Em relação ao RMS, se eu gravar algum tipo de dados nele, e posteriormente desligar o Pocket, todas as informações serao perdidas?
Se existir um jeito de nao perder as informações, como deve ser feito???

grato

nao meu amigo banguelo…elas nao serao perdidas…se vc quer uma maneira facil e eficiente de trabalahr com RMS procura pelo floggy aquela da mundo Java n 30 é muito show…to usando aqui e to gostando muito…

Só que quando eu saio do MidletSuite da IBM ou quando desligo o pocket ele simplesmente perde os dados

[code]public void adicionaRegistro(String param0) {

    this.texto = param0;

    try {
        rs = RecordStore.openRecordStore("BD", true);
        ByteArrayOutputStream BAOS = new ByteArrayOutputStream();
        DataOutputStream DOS = new DataOutputStream(BAOS);
        DOS.writeUTF(param0);
        byte[] bRec = BAOS.toByteArray();
        rs.addRecord(bRec, 0, bRec.length);
        DOS.close();
        BAOS.close();
    } catch (Exception e) {
        System.out.println(e);
    }


}[/code]

V essa versao da KVM…tenta usar um classe com o floggy so pra testar…mas isso é a kvm

Vou verificar essa KVM… tem alguma sugestao de KVM???
Enquanto isso segue o codigo completo:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package hello;

/**
*

  • @author rribeiro
    */

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.lcdui.List;
import javax.microedition.rms.*;

public class Gravacao {

RecordEnumeration recordEnumeration;
String texto;
String param0;
String param1;
RecordStore rs;

public Gravacao() {
}

public void adicionaRegistro(String param0) {

    this.texto = param0;
    //   System.out.println(param0);
    try {
        rs = RecordStore.openRecordStore("BD", true);
        ByteArrayOutputStream BAOS = new ByteArrayOutputStream();
        DataOutputStream DOS = new DataOutputStream(BAOS);
        DOS.writeUTF(param0);
        byte[] bRec = BAOS.toByteArray();
        rs.addRecord(bRec, 0, bRec.length);
        DOS.close();
        BAOS.close();
    } catch (Exception e) {
        System.out.println(e);
    }


}

public String retornaRegistro(int id) {



    String toReturn = "";
    try {
        rs = RecordStore.openRecordStore("BD", true);
        int recordSize = rs.getRecordSize(id);
        byte[] data = new byte[recordSize];
        ByteArrayInputStream bais = new ByteArrayInputStream(data);
        DataInputStream dis = new DataInputStream(bais);
        int numBytes = rs.getRecord(id, data, 0);
        toReturn = dis.readUTF();
        bais.reset();
        bais.close();
        dis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }


    return toReturn;

}

public void listaTodos() {
    
    List lista = new List("Lista Original", List.IMPLICIT);
    ServletConexao sc = new ServletConexao();
    
    try {

     
        
        rs = RecordStore.openRecordStore("BD", true);

        for (int i = 1; i <= rs.getNumRecords(); i++) {
            lista.append(retornaRegistro(i), null);

        }
                    
        sc.setParametros(lista);

    } catch (Exception error) {
        error.printStackTrace();
    }



}

}
[/code]

saca só a diferença do seu codigo de salvar para esse:

/*
 * Funcionario.java
 *
 * Created on 28 de Agosto de 2008, 20:03
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package rms;

import java.io.*;
import javax.microedition.lcdui.List;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import net.sourceforge.floggy.persistence.FloggyException;
import net.sourceforge.floggy.persistence.ObjectSet;
import net.sourceforge.floggy.persistence.Persistable;
import net.sourceforge.floggy.persistence.PersistableManager;
/**
 *
 * @author Abel Gomes
 */
public class FuncionarioRms implements net.sourceforge.floggy.persistence.Persistable {
    
    private String nome;
    
    private String endereco;
    
    private String telefone;
    
    public FuncionarioRms(){
        
    }
    
    public void salvar(FuncionarioRms func){
        
        PersistableManager pm = PersistableManager.getInstance();
        
        try{
            pm.save(func);
        }catch(FloggyException e){
            
        }
    }
    
    public void excluir(Object obj){
        try {
            PersistableManager.getInstance().delete((Persistable) obj);
        } catch (FloggyException ex) {
            ex.printStackTrace();
        }
    }
    
    public ObjectSet buscar(String nome){
        FuncionarioRms func  = new FuncionarioRms();
        
        ObjectSet os = null;
        
        try{
            os  = PersistableManager.getInstance().find(FuncionarioRms.class,new FiltroNomeFuncionario(nome),null);
        }catch(FloggyException e){
            
        }
        
        return os;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}

classe filtro…para fazer pesquisa com o paramentro escolhido…no meu caso escolhi o nome

/*
 * FiltroNomeFuncionario.java
 *
 * Created on 30 de Agosto de 2008, 09:41
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package rms;

import net.sourceforge.floggy.persistence.Persistable;

/**
 *
 * @author Abel Gomes
 */
public class FiltroNomeFuncionario implements net.sourceforge.floggy.persistence.Filter {
    
    private String nome;
    /** Creates a new instance of FiltroNomeFuncionario */
    public FiltroNomeFuncionario(String nome) {
        this.nome = nome;
    }

    public boolean matches(Persistable persistable) {
        
        FuncionarioRms func = (FuncionarioRms) persistable;
        
        return func.getNome().startsWith(nome);
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    
}

com base nesse filtro vc pode fazer pesquisa por endereco…etc

da uma olhada no floggy e enxuga esse codigo…no meu celular e nos palms de teste aqui da empresa ele roda show de bola…

tem que V uma versao da kvm q seja compativekl com seu aparelho…entra no site da ibm e veja se eles disponibilizam uma ou se tem alguma atuaçlização

boa sorte :wink: