Rms-j2me

5 respostas
rodrigodsw2005

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

5 Respostas

abelgomes

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…

rodrigodsw2005

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

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


    }
abelgomes

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

rodrigodsw2005

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

/*
 * 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();
        }



    }
}
abelgomes

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:

Criado 8 de outubro de 2008
Ultima resposta 8 de out. de 2008
Respostas 5
Participantes 2