quarta-feira, 20 de junho de 2012

Android – Uma abordagem sobre persistência de dados no SQLite - Parte 2



Implementando o método para Gravar os Dados

A rotina GravarDados nos permite persistir os dados no SQLite. Sempre quando trabalhamos com Banco de Dados é recomendável utilizar o try/Catch. Segue a seguir a instrução.


public void GravarDados()
{
    try
    {
        String strPro = "";
         switch (rgCursos.getCheckedRadioButtonId())
         {
case R.id.rbLiteDelphi : strPro = "The Club   Lite (Delphi) - R$59,90";
             break;
                       
case R.id.rbLiteC : strPro = "The Club Lite (Delphi) - R$59,90";
            break;
                       
case R.id.rbProfessional : strPro = "The Club Lite (Delphi) - R$59,90";
           break;
                       
case R.id.rbStudent : strPro = "The Club Lite   (Delphi) - R$59,90";
           break;
       }
        
String sql = "INSERT INTO TB_THECLUB (NOM_CLI, CID_CLI, EST_CLI, PRO_CLI) VALUES ('"
       + txtCliente.getText().toString() +"','"
      + txtCidade.getText().toString()+"','"
      + spEstado.getSelectedItem().toString()+"','"
      + strPro+"')";
             
      BancoDados.execSQL(sql);           
MensagemAlerta("Mensagem", "Dados salvos com Sucesso!");
             
     }
    catch (Exception e)
    {
MensagemAlerta("Mensagem", "Erro ao gravar dados no Banco de Dados!"+e.toString());
     }
finally
    {
         BancoDados.close();
    }
}

O método “BancoDados.execSQL()” é responsável por montar a instrução de Insert no BD. O que fazemos de diferente aqui é que recuperamos os dados das respectivas variáveis (nome,cidade,estado e produto) e finalizando a instrução com uma mensagem informativa ao usuário. O método “BancoDados.close()” limpa o objeto da memória não permitindo recriá-lo desnecessariamente.
  
Implementando os métodos RegistroAnterior e RegistroPosterior

Estes métodos são reponsáveis por realizar a navegação entre os registros de nosso Banco de Dados. Novamente implementamos o Try/Catch, só que neste caso informaremos ao usuário caso não exista mais registros para navegação que ele está no primeiro ou último registro de nossa tabela.
public void RegistroAnterior()
{
    try
    {
         cursor.moveToPrevious();
         MostrarDados();
     }
    catch (Exception e)
    {
MensagemAlerta("Mensagem", "Você está no primeiro registro!");
     }
}
   

public
 void RegistroPosterior()
{
    try
    {
         cursor.moveToNext();
         MostrarDados();
     }
    catch (Exception e)
    {
MensagemAlerta("Mensagem", "Você está no último registro!");
     }
}


O método que faz este trabalho de navegação é o “cursor.moveToPrevious()” e o “cursor.moveToNext()”, sendo que o primeiro se movimenta para o registro anterior e o segundo para o posterior. Logo em seguida invocaremos o método MostrarDados() para preencher nossos respectivos objetos.

Métodos ChamaMenuPrincipal(), ChamaCadastro() e ChamaConsulta()

Estas rotinas já foram abordadas em artigos anteriores. Neste artigo foram implementadas novas funcionalidades para as mesmas.


public void ChamaMenuPrincipal()
{
    setContentView(R.layout.main);
    ChamaCadastro();
     ChamaConsulta()
}
   
public void ChamaCadastro()
{
Button btCadastrar = (Button) findViewById(R.id.btCadastrar);
btCadastrar.setOnClickListener(new View.OnClickListener()
     {  
         @Override
         public void onClick(View v)
         {
              setContentView(R.layout.cadastro);
                  
btEfetuar =  (Button) findViewById(R.id.btnEfetuar);
btEfetuar.setOnClickListener(new View.OnClickListener()
              {
                   @Override
                   public void onClick(View arg0)
                   {
                        AbreouCriaBancoDados();
                        InicializaObjetos();
                        GravarDados();
                   }
              });
             
Button btVoltarCadastro = (Button) findViewById(R.id.btVoltarCadastro);
btVoltarCadastro.setOnClickListener(new View.OnClickListener()
             {
                   @Override
                   public void onClick(View v)
                   {   
                        ChamaMenuPrincipal();
                   }
              }
              );
         }
     });
}

O botão “Efetuar” é encarregado de persistir os dados, então é nele que chamamos o método AbreouCriaBancoDados() – para abrir ou criar a estrutura, logo em seguida Inicializamos os objetos com o método InicializaObjetos() e finalizamos com o GravarDados(). Ver Imagem 04.

Figura 04: Tela de Cadastro Finalizada.

   
public void ChamaConsulta()
{
Button btConsultar = (Button) findViewById(R.id.btConsultar);
btConsultar.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
          {
              setContentView(R.layout.consulta);
     AbreouCriaBancoDados();
              InicializaObjetos();
              BuscarDados();
              MostrarDados();
                    
Button btAnterior = (Button) findViewById(R.id.btAnterior);
btAnterior.setOnClickListener(new View.OnClickListener()
              {
                   @Override
                   public void onClick(View arg0)
                   {
                        RegistroAnterior();
                   }
              }
              );
                  
Button btPosterior = (Button) findViewById(R.id.btPosterior);
btPosterior.setOnClickListener(new View.OnClickListener()
              {
                   @Override
                   public void onClick(View arg0)
                   {
                        RegistroPosterior();
                   }
              }
              );
                  
Button btVoltarConsulta = (Button) findViewById(R.id.btVoltarConsulta);
btVoltarConsulta.setOnClickListener(new View.OnClickListener()
              {
                   @Override
                   public void onClick(View v)
                   {
                        ChamaMenuPrincipal();
                   }
              }
              ); 
                  
         }
        }
        );
}

No ChamaConsulta() também inicializamos o método AbreouCriaBancoDados(), logo em seguida o InicializaObjetos(). O próximo passo utilizamos o BuscarDados() e por final o MostrarDados(). Como nesta tela utilizamos mais outros dois controles para navegação entre os registros, então é aqui o local de chamar o RegistroAnterior() e o RegistroPosterior(), ambos para navegação entre os dados. Ver Imagem 05.

Figura 05: Tela de Consulta Finalizada.

Conclusão

Procurei neste artigo abordar de uma forma simples a persistencia de dados utilizando o sistema Android. Dividi em pequenas rotinas cada estrutura para podermos dar uma maior abordagem sobre o assunto. Finalizamos duas telas principais, uma de Cadastro e outra de Consulta.

Abraço e até o mês que vem!

Nenhum comentário:

Postar um comentário