Olá
amigos do The Club, tivemos outros artigos relacionados a persistência de dados
em banco no Sistema Android. Neste artigo vou procurar detalhar um pouco mais
dos recursos utilizados nos artigos anteriores e conhecer outros para se
trabalhar com Banco de Dados. Estas informações se tornam primordiais para quem
está começando a aprender este tipo de linguagem de programação. Continuaremos
trabalhando com o SQLite, lembrando que o mesmo é responsável por persistir os
dados no Banco. O foco deste artigo é permitir que os senhores montem uma tela
simples de cadastro e outra de consulta persistindo e trabalhando com os dados.
Criando um novo
Projeto
Seguindo
os mesmos passos dos artigos anteriores para criar um novo projeto é bem
simples, clique em File/New/Project Android e configure as propriedades da
seguinte maneira:
Nome do
Projeto: Android_BancoDados
Versão: Android 2.2
Aplicação: Android_BancoDados
Nome Pacote: pct. Android_BancoDados
Atividade: Android_BancoDadosActivity
Versão SDK: 8
Versão: Android 2.2
Aplicação: Android_BancoDados
Nome Pacote: pct. Android_BancoDados
Atividade: Android_BancoDadosActivity
Versão SDK: 8
A
configuração deverá ficar idêntica a Imagem 01.
Figura 01: Configurações Iniciais.
Para
finalizar esta etapa clique em “Finish”.
Importando as
telas
O passo
seguinte seria aproveitarmos as telas e boa parte da codificação do artigo
“Navegando entre Telas” do Mês de Março de 2012. A diferença é que estaremos
persistindo os dados no Banco de Dados, ao invés de salvar na memória em uma
classe. Ver Imagem 02.
Figura 02: Telas importadas do artigo do mês de Março.
A Tela de
Consulta possuirá mais dois botões para navegação entre os registros. Ver
Imagem 03 e em seguida o código XML correspondente.
Figura 03: Tela de Consulta.
<LinearLayout
android:layout_width="match_parent" android:id="@+id/linearLayout5"
android:layout_height="67dp">
<Button android:text=" Anterior" android:id="@+id/btAnterior"
android:layout_height="wrap_content" android:layout_width="160dp"></Button>
<Button android:text="Posterior " android:id="@+id/btPosterior"
android:layout_width="160dp" android:layout_height="wrap_content"></Button>
</LinearLayout>
Implementando o método para inicializar os componentes
Implementando o método para inicializar os componentes
Achei
interessante e prático criar um método para iniciar os objetos utilizados ao longo
no desenvolvimento. São as mesmas variáveis utilizadas anteriormente, por isto
não entrarei em detalhes.
public void InicializaObjetos()
public void InicializaObjetos()
{
//Variáveis utilizadas no Cadastro
rgCursos = (RadioGroup)
findViewById(R.id.rgCursos);
rbLiteDelphi =
(RadioButton) findViewById(R.id.rbLiteDelphi);
rbLiteC = (RadioButton)
findViewById(R.id.rbLiteC);
rbProfessional =
(RadioButton) findViewById(R.id.rbProfessional);
rbStudent = (RadioButton)
findViewById(R.id.rbStudent);
txtCliente = (EditText)
findViewById(R.id.edtCliente);
txtCidade = (EditText)
findViewById(R.id.edtCidade);
spEstado = (Spinner) findViewById(R.id.spnEstado);
//Variáveis utilizadas na Consulta
txtCli = (TextView) findViewById(R.id.lbCliente);
txtCid = (TextView)
findViewById(R.id.lbCidade);
txtEst = (TextView)
findViewById(R.id.lbEstado);
txtCur = (TextView)
findViewById(R.id.lbProduto);
txtCod = (TextView)
findViewById(R.id.lbCodigo);
}
Implementando o método para Abrir ou Criar o Banco de Dados
Para
darmos continuidade ao artigo abra nossa “Activity” em
“Android_BancoDados\src\pct.Android_BancoDados\Android_BancoDadosActivity.java”.
Importaremos
duas classes responsáveis pela manipulação de dados, sendo:
Import
android.database.sqlite.SQLiteDatabase: Seria o Banco de Dados propriamente dito, ou
seja, responsável por armazenar as informações.
Import
android.database.Cursor: Esta classe é responsável por manipular, navegar entre os
registros do Banco de Dados.
Logo em
seguida criaremos os objetos dentro da Activity.
SQLiteDatabase BancoDados = null;
Cursor cursor;
Devemos também criar um método responsável por abrir ou criar o Banco de Dados.
public void AbreouCriaBancoDados()
{
try
{
BancoDados =
openOrCreateDatabase("DBTHECLUB",
MODE_WORLD_READABLE,
null);
String sql = "CREATE
TABLE IF NOT EXISTS TB_THECLUB"
+"(COD_CLI INTEGER
PRIMARY KEY, " +
"NOM_CLI TEXT, END_CLI
TEXT, TEL_CLI TEXT, PRO_CLI TEXT)";
BancoDados.execSQL(sql);
Mensagem("Mensagem", "Banco Criado com Sucesso!");
}
catch (Exception e)
{
Mensagem("Mensagem", "Erro ao criar ou abrir o Banco de
Dados!");
}
}
public void
Mensagem(String Titulo, String Mensagem)
{
AlertDialog.Builder infoResultado = new
AlertDialog.Builder(Android_BancoDadosActivity.this);
infoResultado.setTitle(Titulo);
infoResultado.setMessage(Mensagem);
infoResultado.setNeutralButton("Ok",null);
infoResultado.show();
}
Iniciamos o método com um try/catch para validar a criação ou abertura do BD. Usaremos o método “OpenOrCreateDatabase” para criar o Banco de Dados contendo os seguintes parâmetros:
Iniciamos o método com um try/catch para validar a criação ou abertura do BD. Usaremos o método “OpenOrCreateDatabase” para criar o Banco de Dados contendo os seguintes parâmetros:
Tipo
|
Parâmetro
|
Descrição
|
Name
|
“DBTHECLUB”
|
Nome para o
Banco de Dados.
|
Mode
|
MODE_WORD_READABLE
|
Significa que
todas as aplicações poderão ler e acessar o arquivo.
|
Factory
|
null
|
Recurso não
utilizado no momento.
|
A próxima
etapa nós escrevemos a instrução SQL para criar a tabela de TB_THECLUB caso já
não exista em nosso Banco de Dados. O comando BancoDados.execSql(sql) é
responsável por esta tarefa. Utilizamos um método já abordado em outros artigos
para podermos exibir uma mensagem informativa ao usuário, obtendo ou não
sucesso na criação ou abertura de nosso Banco de Dados SQLite.
Implementando o método para Buscar os
dados
Este método irá
realizar a consulta SQL no SQLite retornando os dados para o Cursor.
public void BuscarDados()
{
try
{
cursor =
BancoDados.query("TB_THECLUB",
new string[] {"NOM_CLI","CID_CLI","EST_CLI","PRO_CLI"},
null,
null,
null,
null,
null);
if (cursor.getCount()!= 0 )
{
cursor.moveToFirst();
}
}
catch (Exception e)
{
MensagemAlerta("Mensagem",
"Erro ao buscar dados no Banco de Dados!");
}
}
Iniciamos
o método com um try/catch para validar a obtenção dos dados usando o método
“Query”. Neste caso atribuímos nossa consulta ao “Cursor” instanciado no início
do artigo. Explicarei todos
os argumentos na tabela a seguir.
Argumentos do
Método BancoDados.query()
Tipo
|
Parâmetro
|
Descrição
|
Table
|
“TB_THECLUB”
|
Nome da tabela
utilizada.
|
Columns
|
new String
[]{"NOM_CLI","CID_CLI","EST_CLI","PRO_CLI"}
|
Um vetor
contendo todos os campos utilizados.
|
Selection
|
Null
|
Cláusula Where
|
SelectionArgs
|
Null
|
Argumento da
cláusula Where.
|
GroupBy
|
Null
|
Argumento para
agrupar os registros.
|
Having
|
Null
|
Argumento para restringir
a quantidade de registros.
|
OrderBy
|
Null
|
Argumento para
Ordenação dos registros.
|
O método “cursor.GetCount()”
nos permite descobrir se possuímos ou não registros, Já o “cursor.MoveToFirst()”
nos desloca para o primeiro Registro da tabela.
Implementando o Método para Mostrar os
Dados
Quando executamos
uma consulta com o BD armazenamos os dados no cursor, portanto agora precisamos
recuperar os registros para poder mostrar em um textbox por exemplo, veja a
seguir o método que faz exatamente esta tarefa.
public void
MostrarDados()
{
txtCod.setText(cursor.getString(cursor.getColumnIndex("COD_CLI")));
txtCli.setText(cursor.getString(cursor.getColumnIndex("NOM_CLI"))); txtCid.setText(cursor.getString(cursor.getColumnIndex("CID_CLI")));
txtEst.setText(cursor.getString(cursor.getColumnIndex("EST_CLI")));
txtCur.setText(cursor.getString(cursor.getColumnIndex("PRO_CLI")));
}
O método “GetString()” retorna uma string a partir de um index. Portanto
utilizamos o “GetColumnIndex()” passando como parâmetro o nome do campo para
obter o registro correspondente.
Nenhum comentário:
Postar um comentário