RMS - Persistência de Dados em J2ME

04 junho 2009

Cada dispositivo móvel mantém uma área da memória para o armazenamento de dados. Neste artigo vamos aprender como é manipulado esta área através da API RMS (Record Management System), que é a solução do J2ME para a criação e manipulação de registros.

O armazenamento de dados (banco de dados) é chamado de Record Store. Ele é identificado por um nome, que é case sensitive e é criado por um MIDlet. Então quando um MIDlet é removido de um dispositivos todos os Record Stores relacionados a ele serão removidos também.

A API RMS não suporta tipos característicos de outros banco de dados, como tabelas, colunas ou linhas, nele cada registro é um array de bytes. Por causa disso a aplicação deve converter os dados para array de bytes para poderem ser armazenados. Para ler os dados o processo inverso deve ser feito.
Porém podemos imaginar o Record Store como um conjunto de linhas, onde cada linha é um registro ou Record e estes são identificados por uma chave primária, chamada Record ID, que é um inteiro. Logo, cada registro é formado por um inteiro e um array de bytes.

Métodos fornecidos pelo Record Store:

openrecordstore(String nome, boolean criarCasoNaoExista): abre ou cria um Record Store. É por meio dessa função que se obtêm o Record Store, já que essa classe não tem construtor.
A função tenta abrir o Record Store de nome informado no primeiro parâmetro. Caso este não exista ele verifica o segundo parâmetro para ver se deseja criá-lo ou não. Se for true cria o Record Store, se for false só permite abri-lo e não criá-lo.

closerecordstore(): fecha um Record Store que está aberto.

deleterecordstore(String nomeDoRecordStore): apaga o Record Store com o nome informado. Para que um Record Store poça ser apagado é necessário este estar fechado.

Os métodos para a criação e manipulação são:

int addrecord(byte [] dados, int offset, int numbytes): adiciona um registro.
byte [] dados: são os dados que deseja armazenar.
int offset: é o primeiro índice do array de bytes que deve ser lido.
int numbytes: tamanho do array de bytes do dado que se quer armazenar.

setrecord(int id, byte [] novosdados, int offset, int numbytes): faz a atualização de um registro.
int id: identificador do registro que se deseja atualizar.
Os outros 3 parâmetros são os mesmos do método acima (addrecord).

delederecord(int id): apaga o registro informado pelo parâmetro id.

byte [] getrecord(int id): recupera um determinado registro (Record) do Record Store.
O método devolve o dado, armazenado no array de bytes, referente ao id passado por parâmetro.

int getnumrecords(): obtêm a quantidade de registros que tem em um Record Store.

O próximo post apresentará o código de uma agenda, usando armazenamento persistente. Será explicado com detalhes a utilização dos métodos da API RMS como abrir um Record Store, adicionar um Record, listar, entre outros.

3 comentários:

  • Bacana! Muito bom! Fazer com base em algo pronto sem explicações de como é feito não adianta mto, do modo que fez é o jeito certo de aprender. Vlw!

  • Legal,gostei muito bem explicado.!!!

  • JME Iniciantes

    postagem muito interessante mas falta o nome do autor :)

  • Postar um comentário