apostila android programacao com banco dados

Upload: fabiopandin

Post on 12-Oct-2015

78 views

Category:

Documents


1 download

TRANSCRIPT

  • 1

    (VENDA E DISTRIBUIO PROIBIDA)

    De : Luciano Alves da Silva ([email protected])

    www.apostilaandroid.net

    Rio de Janeiro Novembro 2012

  • 2

    Aviso sobre esta apostila Antes de iniciar a leitura deste material, veja esses avisos importantes: Esse material NO PODER SER DISTRIBUDO, em hiptese alguma, em outros sites da Internet ou atravs outros processos/meios . Essa material , em hiptese alguma, NO PODE SER COMERCIALIZADO tanto pela Internet ou de forma impressa.

    Se por acaso voc ver este material sendo distribudo em outro site ou sendo comercializado (sem ser pelo site oficial da apostila), por favor, entre em contato com o autor (ver e-mail na primeira pgina).

  • 3

    Sobre o Autor da Apostila Luciano Alves da Silva Bacharelado em Cincia da Computao pela UNISUAM e Ps-Graduado em Docncia do Ensino Superior pelo Instituto A Vez do Mestre (Universidade Cndido Mendes - UCAM). Possui conhecimento e domnio das linguagens de programao Pascal, Java, C/C++, C#, Visual Basic, Delphi, PHP e HTML. J criou Ambientes de Desenvolvimento Integrado (conhecidos como IDE) como o MakeWare (que trabalha com as linguagens Pascal, C++ e Java) e o AlgoWare (interpretador de algoritmos). autor tambm dos seguintes livros, pela editora AGBOOK - Aprenda Passo a Passo a Programar em Android Guia Essencial para Desenvolvedores - Desenvolvendo Jogos com a Plataforma XNA Guia para Desenvolvedores. - Desenvolvendo Jogos com a Ferramenta RPG Maker VX Guia do Usurio.

  • 4

    Apresentao

    Este material dedicado para aqueles que desejam trabalhar com banco de dados usando o SQLite, presente na plataforma Android para o armazenamento e gerenciamento de dados. Caso voc, que esteja lendo este material, seja iniciante em programao com Android, recomendo antes adquirir no site oficial a Apostila de Android Programando Passo a Passo 5 Edio, pois esse material nada mais do que um complemento da apostila citada. Agora caso voc j possua conhecimento bsico sobre programao com Android, e deseja aprender banco de dados, este material lhe dar todo o passo a passo para a construo de programas em Android que trabalhem com banco de dados.

  • 5

    ndice analtico Captulo 1 - Programao com Banco de Dados no Android ....................... 6

    1.1) A linguagem SQL .................................................................................... 6 1.1.1) O comando CREATE TABLE ............................................................ 7 1.1.2) O comando INSERT ......................................................................... 7 1.1.3) O comando UPDATE ........................................................................ 8 1.1.4) O comando DELETE ......................................................................... 8 1.1.5) O comando SELECT ......................................................................... 8

    1.2) Trabalhando com o SQLite do Android ............................................... 9 1.2.1) O mtodo query ................................................................................ 9 1.2.2) O mtodo insert............................................................................... 10 1.2.3) O mtodo update ............................................................................ 10 1.2.4) O mtodo delete.............................................................................. 10 1.2.5) O mtodo execSQL ......................................................................... 11

    1.3) Exemplos de SQL usando as funes do Android ........................... 11 1.3.1) Fazendo uma consulta a tabela (usando SELECT) ........................ 11 1.3.2) Inserindo dados (usando INSERT) ................................................. 12 1.3.3) Atualizando dados (usando UPDATE) ............................................ 12 1.3.4) Removendo dados (usando DELETE) ............................................ 13 1.3.5) Criando uma tabela (usando CREATE TABLE) .............................. 13

    1.4) Desenvolvendo uma aplicao usando banco de dados ................. 16 Concluso a respeito do material ................................................................. 35

  • 6

    Captulo 1 - Programao com Banco de Dados no Android

    plataforma Android possui um mecanismo em que podemos trabalhar com banco de dados usando a linguagem SQL, o SQLite. Aqui neste material irei mostrar como trabalhar com banco de dados no Android.

    Atualmente as aplicaes Android (seja ela uma aplicao comercial, jogo e etc) sempre esto guardando informaes (como por exemplo, o nome do cliente, endereo e etc). Essas informaes so armazenadas normalmente em banco de dados, podendo esse banco ser on-line (situado em um servidor para essa finalidade) ou local (situado no prprio dispositivo). A plataforma Android j oferece (presente em sua arquitetura) um conjunto de recursos (bibliotecas e classes) que permite que ns possamos trabalhar com banco de dados (baseado no SQLite, um sistema gerenciador de banco de dados (SGBD)). Para trabalharmos com banco de dados, naturalmente, preciso ter o conhecimento e o domnio da linguagem SQL (Structured Query Language), que uma linguagem padro voltada para trabalhar com BD. Antes de comearmos a trabalhar com BD no Android, precisamos conhecer e entender sobre est linguagem SQL.

    1.1) A linguagem SQL

    A linguagem SQL (Structured Query Language) uma linguagem de consulta estruturada que realiza consultas banco de dados. A SQL dividida em duas sub-linguagens: LMD (Linguagem de Manipulao de Dados ou Data Manipulation Language DML) e LDD (Linguagem de Definio de Dados ou Data Definition Language DDL) . A LDD um conjunto de comandos dentro da SQL usada para a definio das estruturas de dados, fornecendo as instrues que permitem a criao, modificao e remoo das tabelas, assim como criao de ndices. J a LMD o grupo de comandos dentro da linguagem SQL utilizado para a recuperao, incluso, remoo e modificao de informaes em bancos de dados. Vamos conhecer agora alguns comandos bsicos muito utilizados da linguagem SQL.

    A

  • 7

    1.1.1) O comando CREATE TABLE Esse comando serve para criar tabelas em banco de dados. Veja a sua sintaxe abaixo:

    create table ( [] [, [],..., [ ]])

    Exemplo: Criar uma tabela chamada cadastro com os seguintes campos: - codusuario: Do tipo inteiro e com propriedades de chave primria e auto numerao. - nome : Do tipo texto e requerido - idade : Do tipo inteiro e requerido

    create table cadastro(codusuario integer primary key autoincrement, nome text not null, idade integer not null)

    Outro exemplo : Criar uma tabela chamada cadastro (com os mesmos campos do exemplo acima) no banco de dados, se ela no existir.

    create table if not exists cadastro(codusuario integer primary key autoincrement, nome text not null, idade integer not null)

    1.1.2) O comando INSERT Esse comando serve para inserir dados em uma tabela j existente. Veja a sua sintaxe abaixo:

    insert into (,...) values(,...,)

    Exemplo: Adicionar dados na tabela cadastro (que foi criada com o comando CREATE TABLE), conforme mostrado abaixo: nome : Luciano idade : 23

  • 8

    OBS: Como o campo codusuario do tipo auto-numerao, o valor dele j definido automaticamente.

    insert into cadastro(nome,idade) values(Luciano,23)

    1.1.3) O comando UPDATE Esse comando serve para atualizar dados de uma tabela j existente. Veja a sua sintaxe abaixo:

    update set = [ ,..., = ] where Exemplo: Atualizar a idade do primeiro registro (Luciano) para 27 anos. update cadastro set idade = 27 where codusuario=1

    1.1.4) O comando DELETE Esse comando serve para remover dados de uma tabela j existente. Veja a sua sintaxe abaixo:

    delete from where Exemplo: Remover o primeiro registro da tabela (Luciano) delete from cadastro where codusuario=1

    1.1.5) O comando SELECT Esse comando serve para fazer consultas em uma tabela j existente. Veja a sua sintaxe abaixo:

    select [,,...,] from where Exemplos : Mostrar todos os dados cadastrados na tabela

  • 9

    select codusuario,nome,idade from cadastro Mostrar todos os nomes cuja idade seja maior que 25. select nome from cadastro where (idade >= 25) Mostrar todos os nomes cujo prefixo seja David, ou melhor, todos que se chamam David independente do sobrenome. select nome from cadastro where (nome like David%) A partir de agora vamos ver abaixo algumas funes do Android que trabalham com banco de dados. 1.2) Trabalhando com o SQLite do Android No Android existe um pacote chamado android.sqlite, onde existe uma classe chamada SQLiteDataBase, que possui os seguintes mtodos, conforme mostrado em seguida: 1.2.1) O mtodo query O mtodo query realiza uma consulta SQL no banco de dados (equivale ao comando SELECT). Essa funo retorna uma instncia (objeto) do tipo Cursor. Vejamos a sintaxe do mtodo em seguida: Cursor query(String , String[] , String , String[] , String , String , String ) Vamos conhecer os parmetros que iremos utilizar dessa funo: : Neste parmetro voc informa o nome da tabela. : Neste parmetro a(s) coluna(s) que o banco possui. : Aqui voc informa a condio de busca de dados. Este parmetro funciona como se fosse a clausula where do SQL, onde informada a condio de busca. O restante dos parmetros iremos trabalhar em seu valor null.

  • 10

    1.2.2) O mtodo insert O mtodo insert realiza uma insero de dados na tabela (equivale ao comando INSERT). Vejamos a sintaxe deste mtodo: long insert(String , String , ContentValues ) Essa funo possui trs parmetros: : Neste parmetro voc informa o nome da tabela. : O SQL no permite a insero de linhas em branco, logo, se o valor de uma coluna for vazio, ele ser iniciado com o valor null. : Este parmetro possui os valores a serem adicionados na tabela. 1.2.3) O mtodo update O mtodo update realiza uma atualizao de dados na tabela (equivale ao comando UPDATE). Vejamos agora a sintaxe deste mtodo : int update(String , ContentValues , String , String ) Essa funo possui trs parmetros: : Neste parmetro voc informa o nome da tabela. : Este parmetro possui os valores a serem adicionados na tabela. : Aqui voc informa a condio para a realizao da atualizao dos dados. : Aqui voc informa os argumentos relativos condio informada. 1.2.4) O mtodo delete O mtodo delete realiza a remoo de dados na tabela (equivale ao comando DELETE). Vejamos a sintaxe deste mtodo: int delete(String , String , String ) Essa funo possui trs parmetros:

  • 11

    : Neste parmetro voc informa o nome da tabela. : Aqui voc informa a condio para a realizao da remoo dos dados da tabela. : Aqui voc informa os argumentos relativos condio informada. 1.2.5) O mtodo execSQL O mtodo execSQL executa uma consulta SQL (como CREATE TABLE, INSERT INTO, UPDATE, DELETE e etc.). No possvel usar a clausula SELECT nesta funo. Para esse tipo de situao, use o mtodo query. Vejamos a sintaxe deste mtodo: void execSQL(String sql) Vamos fazer algumas comparaes da funo execSQL, que permite sintaxes de comando SQL com as demais funes, como update,insert e delete para a realizao de uma consulta SQL.

    1.3) Exemplos de SQL usando as funes do Android 1.3.1) Fazendo uma consulta a tabela (usando SELECT) - Comando SQL :

    select codusuario, nome, idade from cadastro - Usando a funo query : query(cadastro, (new String[] {codusuario,nome,idade}), null, null, null, null, null);

    - Comando SQL :

    select nome from cadastro where idade > 24

  • 12

    - Usando a funo query : query(cadastro, (new String[] {nome}),idade > 24 , null, null, null, null);

    1.3.2) Inserindo dados (usando INSERT) - Comando SQL : insert into cadastro(nome,idade) values(Luciano,23)

    - Usando a funo execSQL execSQL(insert into cadastro(nome,idade) values(Luciano,23);); Usando a funo insert : ContentValues valor = new ContentValues(); valor.put(nome, Luciano ); valor.put(idade, 23); insert(cadastro,null,valor); 1.3.3) Atualizando dados (usando UPDATE) - Comando SQL : update cadastro set idade = 27 where codusuario=1 - Usando a funo execSQL execSQL(update cadastro set idade = 27 where (codusuario=1););

    Usando a funo update : ContentValues valor = new ContentValues(); valor.put(idade, 27); update(cadastro,valor, codusuario=1);

  • 13

    1.3.4) Removendo dados (usando DELETE) - Comando SQL : delete from cadastro where codusuario=1 - Usando a funo execSQL execSQL(delete from cadastro where (codusuario=1); ); Usando a funo delete : delete(cadastro, codusuario=1,null); 1.3.5) Criando uma tabela (usando CREATE TABLE) - Comando SQL : create table cadastro(codusuario integer primary key autoincrement, nome text not null, idade integer not null) - Usando a funo execSQL execSQL(create table cadastro(codusuario integer primary key autoincrement, nome text not null, idade integer not null);); Agora vamos conhecer as funes responsveis por criar e abrir banco de dados no Android. SQLDatabase openOrCreateDatabase(String nome_do_banco,int mode, CursorFactory cf); Essa funo abre ou cria um novo banco de dados. Voc deve especificar o nome do banco e o modo de abertura (somente leitura ; somente escrita e etc.) e um terceiro parmetro, que normalmente null. Veja um exemplo abaixo: SQLDatabase db; db = openOrCreateDatabase("dbbanco", Context.MODE_PRIVATE, null); O comando acima abre ou cria o banco de dados chamado dbbanco.

  • 14

    Quando realizamos uma consulta do tipo SELECT usando a funo query, ela retorna um objeto do tipo Cursor, onde nela esto armazenados os registros solicitados pela consulta. Vamos ver abaixo os mtodos da classe Cursor:

    Mtodo Descrio boolean moveToFirst()

    Move o cursor para o primeiro registro da tabela.

    boolean moveToPrevious()

    Move o cursor para o registro anterior da tabela.

    boolean moveToNext()

    Move o cursor para o prximo registro da tabela.

    boolean moveToLast()

    Move o cursor para o ltimo registro da tabela.

    int getCount() Retorna o nmero de registros da tabela.

    int getColumnIndex(String columnName) Retorna o ndice da coluna na tabela, atravs do seu nome, que passado como parmetro.

    String getColumnName(int columnIndex)

    Retorna o nome da coluna na tabela, atravs do seu ndice, que passado como parmetro.

    int getInt(int columnIndex)

    Retorna o valor do campo, tendo como seu parmetro o seu ndice, convertido em int. Lembre-se : o ndice do primeiro campo 0, o ndice do segundo campo 1 e assim por diante.

    float getFloat(int columnIndex)

    Retorna o valor do campo, tendo como seu parmetro o seu ndice, convertido em float. Lembre-se : o ndice do primeiro campo 0, o ndice do segundo campo 1 e assim por diante.

    double getDouble(int columnIndex)

    Retorna o valor do campo, tendo como seu parmetro o seu ndice, convertido em double. Lembre-se : o ndice do primeiro campo 0, o ndice do segundo campo 1 e assim por diante.

    short getShort(int columnIndex)

    Retorna o valor do campo, tendo como seu parmetro o seu ndice, convertido em short. Lembre-se : o ndice do primeiro campo 0, o ndice do segundo campo 1 e assim por diante.

  • 15

    Vou mostrar agora um exemplo para que voc tenha um melhor entendimento do mecanismo de banco de dados do Android. Imagine uma tabela chamada cadastro com os seguintes dados abaixo:

    nome idade Amanda 32 Bianca 30 Bruna 23 Carla 20

    Agora, observe a linha de cdigo abaixo:

    SQLDatabase db; db = openOrCreateDatabase("dbbanco", Context.MODE_PRIVATE, null); Cursor c = db.query("cadastro", (new String[] {"nome","idade"}), "idade < 32", null, null, null, null);

    Observe que a linha acima cria um objeto do tipo Cursor que vai receber o resultado da consulta da funo query, que retorna uma instncia do mesmo tipo. Logo, a instncia retornada pela funo query na verdade, retorna uma tabela resultante da consulta. Veja esse resultado abaixo:

    nome idade Bruna 23 Carla 20

    Continuando a codificao. Veja a linha abaixo: c.moveToFirst(); A linha acima coloca o ponteiro no primeiro registro da tabela. A linha: String nome = c.getString(0); Retorna o valor do campo nome do primeiro registro, no caso, Bruna. Veja agora a prxima linha: int idade = c.getInt(1); Retorna o valor do campo idade do primeiro registro, no formato int. Neste caso, o valor retornado 23. A linha: c.moveToNext();

  • 16

    A linha acima avana para o prximo registro. A linha:

    nome = c.getString(0);

    Retorna o valor do campo nome do segundo registro, no caso, Carla. Veja agora a prxima linha: int idade = c.getInt(1);

    Retorna o valor do campo idade do segundo registro, no formato int. Neste caso, o valor retornado 20. Bom, com certeza voc entendeu como funciona o mecanismo de manipulao de banco de dados no Android. Agora vamos por esse aprendizado na prtica.

    1.4) Desenvolvendo uma aplicao usando banco de dados Com o que j aprendemos neste captulo (e tambm ns captulos e tpicos anteriores) j podemos desenvolver uma aplicao mais interessante. Para tornar o aprendizado mais interessante vamos criar uma aplicao de cadastro de pessoas. Nessa aplicao o usurio vai informar os seguintes dados : nome, profisso e idade. Essa aplicao vai possuir trs telas, cada uma com as seguintes funcionalidades: Tela principal (tela com opes): Nessa tela da aplicao teremos um menu que dar acesso ao cadastro do usurio e a visualizao dos usurios cadastrados. Tela de cadastro: Nesse tela o usurio ir preencher os campos solicitados pela aplicao e em seguida o mesmo poder cadastrar para que as informaes sejam registradas. Tela de visualizao de dados: Nessa tela podero ser visualizados os dados (usurios) cadastrados. Se nada foi cadastrado na aplicao, ser exibida uma mensagem informando essa situao. Nessa aplicao para armazenar os dados eu fao uso de uma estrutura de dados do tipo lista (duplamente encadeada). Nessa estrutura os dados so armazenados em sequncia, e acessados tanto sequencialmente e na sua ordem inversa de cadastro (avanando e retrocedendo pelos registros). Bom, vamos construir a nossa aplicao. Crie um novo projeto com os seguintes dados abaixo:

  • 17

    Application Name: AplicacaoDeCadastroBD Project Name: AplicacaoDeCadastroBD Package Name : com.example.aplicacaodecadastrobd Build SDK : Android 2.2 (API 8) Minimum Required SDK : API 8: Android 2.2 (Froyo) Activity Name: AplicacaoCadastroActivity Layout Name : activity_aplicacao_cadastro Title : Aplicao de Cadastro (BD) Dentro da pasta res/drawable-mdpi coloque uma figura que represente o cone da nossa aplicao. Para esta aplicao utilizei uma imagem de extenso PNG chamada profile.png. Altere a estrutura de layout da sua aplicao para o LinearLayout e em APAGUE o componente TextView. Feito isso adicione os seguintes componentes na sequncia: ImageView

    Propriedade Valor Src (imagem) profile.png

    TextView

    Propriedade Valor

    Text

    Bem vindo a Aplicao de Cadastro de Pessoas.Este um pequeno programa de demonstrao de cadastro.Selecione uma das opes abaixo:

    Button

    Propriedade Valor Id btcadastrarpessoas

    Width fill_parent Text Cadastrar pessoa

  • 18

    Button

    Propriedade Valor Id btlistarpessoas

    Width fill_parent Text Listar pessoas cadastradas

    Seguindo os passos acima, a aplicao deve estar de acordo com a figura seguinte:

    Layout da tela principal da aplicao

    Vejamos agora a estutura XML da tela principal da nossa aplicao:

  • 19

    Agora vamos criar mais uma tela (arquivo de layout XML) para nossa aplicao. Para isso vamos clicar com o boto direito sobre a pasta layout e em seguida vamos chamar o recurso de criao de arquivos de layout XML para Android (o Android XML Layout File, conforme j foi mostrado anteriormente no ltimo exemplo). O nome do nosso arquivo de layout XML vai ser cadastro (a estrutura que vamos utilizar para essa tela ser o LinearLayout). Depois de criado o arquivo vamos adicionar os seguintes componentes na sequncia: ImageView

    Propriedade Valor Src (Imagem) profile

    TextView

    Propriedade Valor Text Mdulo de cadastro.Digite seus dados

    abaixo: TextView

    Propriedade Valor Text Nome:

    EditText (Plain Text)

    Propriedade Valor Id ednome

    Text (Deixar em branco)

  • 20

    TextView

    Propriedade Valor Text Profisso:

    EditText (Plain Text)

    Propriedade Valor Id edprofissao

    Width fill_parent Text (Deixar em branco)

    TextView

    Propriedade Valor Text Idade:

    EditText (Plain Text)

    Propriedade Valor Id edidade

    Width fill_parent Text (Deixar em branco)

    Seguindo os passos acima, a aplicao deve estar de acordo com a figura seguinte:

    Layout da tela de cadastro

    Bom, ainda no acabou. Agora vamos adicionar uma estrutura LinearLayout (Horizontal) que ser responsvel por organizar os botes de forma horizontal

  • 21

    logo aps a EditText que representa o campo idade. Aps adicionar essa estrutura, modifique a seguintes propriedades dela, conforme abaixo:

    Propriedade Valor Gravity center

    A propriedade Gravity , similar a propriedade Orientation, determina o alinhamento dos componentes dentro da estrutura, que no caso acima est alinhando os componentes de forma centralizada, ou seja, os componentes vo estar dispostos de forma horizontal (um ao lado do outro) e todos esses componentes estaro organizados de forma centralizada. Seguindo o mesmo procedimento acima, vamos adicionar dois componentes do tipo Button dentro dessa estrutura, e vamos mudar as seguintes propriedades citadas abaixo. Button

    Propriedade Valor Id btcadastrar

    Text Cadastrar pessoa Button

    Propriedade Valor Id btcancelar

    Text Cancelar Seguindo os passos acima, o Layout de nossa aplicao deve estar de acordo com a figura abaixo:

  • 22

    Layout da tela de cadastro

    Vamos ver agora a estrutura XML da tela de cadastro da aplicao:

  • 23

    android:layout_height="wrap_content" > Agora vamos criar mais uma tela (arquivo de layout XML) para nossa aplicao. O nome da nossa tela vai se chamar lista_pessoas_cadastradas.

  • 24

    Aps criar a tela da nossa aplicao, vamos adicionar os seguintes componentes na sequncia: ImageView

    Propriedade Valor Src (Imagem) profile.png

    TextView

    Propriedade Valor Text Lista de pessoas

    cadastradas. Text size 20sp

    Seguindo os passos acima, o layout da aplicao deve estar de acordo com a figura seguinte:

    Layout da tela de listagem de cadastrados

    Ainda no acabou. Vamos adicionar aps o texto uma nova estrutura de layout do tipo LinearLayout (Horizontal), e em seguida vamos mudar as seguintes propriedades dela, conforme abaixo: LinearLayout

    Propriedade Valor Id layoutNome

    Agora dentro da estrutura layoutNome vamos adicionar os seguintes componentes na sequncia:

  • 25

    TextView

    Propriedade Valor Text Nome.

    Text color #0000ff Text size 20sp

    TextView

    Propriedade Valor Text (Deixar em branco com

    espaos) Text size 20sp

    Id txtnome Logo aps a estrutura LinearLayout que chamamos de layoutNome, vamos adicionar uma nova estrutura LinearLayout (Horizontal), e em seguida modifique as seguintes propriedades abaixo:

    Propriedade Valor Id layoutProfissao

    Agora dentro da estrutura layoutProfissao vamos adicionar os seguintes componentes na sequncia: TextView

    Propriedade Valor Text Profisso.

    Text color #0000ff Text size 20sp

    TextView

    Propriedade Valor Text (Deixar em branco com

    espaos) Text size 20sp

    Id txtprofissao Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal) e em seguida modifique as seguintes propriedades abaixo:

    Propriedade Valor Id layoutIdade

  • 26

    Agora dentro da estrutura layoutIdade vamos adicionar os seguintes componentes na sequncia: TextView

    Propriedade Valor Text Idade.

    Text color #0000ff Text size 20sp

    TextView

    Propriedade Valor Text (Deixar em branco com espaos)

    Text color #ffffff Text size 20sp

    Id txtidade Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal), como j foi mostrado acima. E depois, modifique as seguintes propriedades abaixo:

    Propriedade Valor Id layoutBotoes

    Gravity Center Agora dentro da estrutura layoutBotoes vamos adicionar os seguintes componentes na sequncia: Button

    Propriedade Valor Id btvoltar

    Text Voltar Button

    Propriedade Valor Id @+lista/btavancar

    Text Avanar Agora vamos adicionar um Button logo aps a estrutura layoutBotoes que criamos com as seguintes propriedades abaixo: Button

    Propriedade Valor Id btmenu_principal

    Text Menu principal Width fill_parent

  • 27

    Seguindo todos os passos acima, o layout da aplicao deve estar de acordo com a figura abaixo:

    Layout da tela de lista de pessoas cadastradas

    Vejamos agora a estrutura em XML da tela de listagem de pessoas cadastradas:

  • 28

  • 29

    No arquivo AplicacaoCadastroActivity.java, vamos adicionar o seguinte cdigo abaixo: package com.example.aplicacaodecadastrobd; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class AplicacaoCadastroActivity extends Activity { Button btcadastarpessoa, btlistarpessoas; Button btcadastrar, btcancelar; Button btvoltar, btavancar, btmenu_principal; TextView txtnome,txtprofissao,txtidade; EditText ednome, edprofissao, edidade; SQLiteDatabase db; Cursor dados; int numero_registros = 0;

  • 30

    int posicao; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { db = openOrCreateDatabase("banco_dados", Context.MODE_PRIVATE, null); db.execSQL("create table if not exists cadusuarios (codusuario integer primary key autoincrement , nome text not null, profissao text not null, idade integer not null)"); } catch(Exception e) { ExibirMensagem(e.toString()); } CarregarTelaPrincipal(); } public void CarregarTelaPrincipal() { setContentView(R.layout. activity_aplicacao_cadastro); btcadastarpessoa = (Button) findViewById (R.id.btcadastrarpessoa); btlistarpessoas = (Button) findViewById (R.id.btlistarpessoas); btcadastarpessoa.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { CarregarTelaCadastro(); } }); btlistarpessoas.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { CarregarTelaListagemPessoas(); } }); }

  • 31

    public void CarregarTelaCadastro() { setContentView(R.layout.cadastro); ednome = (EditText) findViewById(R.id.ednome); edprofissao = (EditText) findViewById (R.id.edprofissao); edidade = (EditText) findViewById(R.id.edidade); btcadastrar = (Button) findViewById (R.id.btcadastrar); btcancelar = (Button) findViewById (R.id.btcancelar); dados = db.query("cadusuarios",( new String[] {"nome","profissao","idade"}), null, null, null, null, null); numero_registros = dados.getCount(); btcadastrar.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View arg0) { try { String nome = ednome.getText().toString(); String profissao = edprofissao. getText().toString(); String idade = edidade.getText(). toString(); numero_registros++; db.execSQL("insert into cadusuarios values(" + String.valueOf (numero_registros) +",'" + nome + "','" + profissao + "'," + idade + ")"); ExibirMensagem("Registro cadastrado com sucesso"); } catch(Exception e) { ExibirMensagem("Erro ao cadastrar"); } CarregarTelaPrincipal(); } });

  • 32

    btcancelar.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View arg0) { CarregarTelaPrincipal(); } }); } public void CarregarTelaListagemPessoas() { try { dados = db.query("cadusuarios",( new String[] {"nome","profissao","idade"}), null, null, null, null, null); numero_registros = dados.getCount(); posicao = 1; }catch(Exception e) { ExibirMensagem("Erro ao obter dados do banco"); CarregarTelaPrincipal(); return; } if(numero_registros == 0) { ExibirMensagem("Nenhum registro cadastrado"); CarregarTelaPrincipal(); return; } else { setContentView(R.layout.lista_pessoas_cadastradas); btvoltar = (Button) findViewById(R.id.btvoltar); btavancar = (Button) findViewById(R.id.btavancar); btmenu_principal = (Button) findViewById (R.id.btmenu_principal); txtnome = (TextView) findViewById(R.id.txtnome); txtprofissao = (TextView) findViewById (R.id.txtprofissao); txtidade = (TextView) findViewById(R.id.txtidade); dados.moveToFirst(); txtnome.setText(dados.getString (dados.getColumnIndex("nome")));

  • 33

    txtidade.setText(dados.getString (dados.getColumnIndex("idade"))); txtprofissao.setText(dados.getString (dados.getColumnIndex("profissao"))); btvoltar.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View arg0) { if(posicao == 1) return; posicao--; dados.moveToPrevious(); txtnome.setText(dados.getString (dados.getColumnIndex("nome"))); txtidade.setText(dados.getString (dados.getColumnIndex("idade"))); txtprofissao.setText(dados.getString (dados.getColumnIndex("profissao"))); } }); btavancar.setOnClickListener(new View. OnClickListener() { @Override public void onClick(View arg0) { if(posicao == numero_registros) return; posicao++; dados.moveToNext(); txtnome.setText(dados.getString (dados.getColumnIndex("nome"))); txtidade.setText(dados.getString (dados.getColumnIndex("idade"))); txtprofissao.setText(dados.getString (dados.getColumnIndex("profissao"))); } }); btmenu_principal.setOnClickListener(new View. OnClickListener() {

  • 34

    @Override public void onClick(View v) { CarregarTelaPrincipal(); } }); } } public void ExibirMensagem(String mensagem){ AlertDialog.Builder dialogo = new AlertDialog. Builder(AplicacaoCadastroActivity.this); dialogo.setTitle("Aviso"); dialogo.setMessage(mensagem); dialogo.setNeutralButton("OK", null); dialogo.show(); } } Aps digitarmos os comandos da classe acima, execute a aplicao acima. O resultado voc confere na imagem seguinte:

    Aplicao em execuo Tela de cadastro

  • 35

    Concluso a respeito do material

    Nesta apostila aprendemos a desenvolver aplicaes em Android voltadas para Banco de Dados. Neste material aprendemos o que vem a ser a linguagem SQL e suas principais caractersticas, aprendemos os comandos bsicos da linguagem (para a realizao de consultas, atualizaes de dados e etc.) e tambm como utiliz-las para a construo de aplicaes voltadas para esse propsito, atravs do pacote oferecido pelo Android para o gerenciamento de Banco de Dados. No final, desenvolvemos uma aplicao que faz uso do Banco de Dados para o armazenamento de gerenciamento de dados pessoais.

    Espero que esse material lhe tenha sido til.

    Abraos

    ndice analticoCaptulo 1 - Programao com Banco de Dados no Android1.1) A linguagem SQL1.1.1) O comando CREATE TABLE1.1.2) O comando INSERT1.1.3) O comando UPDATE1.1.4) O comando DELETE1.1.5) O comando SELECT

    1.2) Trabalhando com o SQLite do Android1.2.1) O mtodo query1.2.2) O mtodo insert1.2.3) O mtodo update1.2.4) O mtodo delete1.2.5) O mtodo execSQL

    1.3) Exemplos de SQL usando as funes do Android1.3.1) Fazendo uma consulta a tabela (usando SELECT)1.3.2) Inserindo dados (usando INSERT)1.3.3) Atualizando dados (usando UPDATE)1.3.4) Removendo dados (usando DELETE)1.3.5) Criando uma tabela (usando CREATE TABLE)

    1.4) Desenvolvendo uma aplicao usando banco de dados

    Concluso a respeito do material