You are on page 1of 28

JOSIEL SILVA MOURA

MANIPULAO DE BANCO DE
DADOS EM

ORIENTADO A PROJETO

2015

Trabalhando com o SQLite do Android

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

JOSIEL SILVA MOURA

MANIPULAO DE
BANCO DE DADOS EM

ORIENTADO A PROJETOS

2 edio

2013
4

Trabalhando com o SQLite do Android

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Sumrio
1.

Trabalhando com o SQLite do Android ......................................................... 7


1.1

O mtodo query................................................................................ 7

1.2

O mtodo insert ................................................................................ 7

1.3

O mtodo update.............................................................................. 8

1.4

O mtodo delete ............................................................................... 8

1.5

O mtodo execSQL .......................................................................... 9

1.6

Exemplos de SQL usando as funes do Android ............................ 9


1.6.1 Fazendo uma consulta a tabela (usando SELECT) ................. 9
1.6.2 Inserindo dados (usando INSERT) ........................................ 10
1.6.3 Atualizando dados (usando UPDATE) ................................... 10
1.6.4 Removendo dados (usando DELETE) .................................. 11
1.6.5 Criando uma tabela (usando CREATE TABLE) ..................... 11

2.

Desenvolvendo uma aplicao usando banco de dados ............................ 15

Trabalhando com o SQLite do Android

1. 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.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 <tabela>, String[] <colunas>, String<condicao_de_busca>,


String[] <selecionArgs>, String <groupby>, String <having>, String <orderby>)

Vamos conhecer os parmetros que iremos utilizar dessa funo:

<tabela> Neste parmetro voc informa o nome da tabela.

<coluna> : Neste parmetro a(s) coluna(s) que o banco possui.

<condio de busca>: 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.

1.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 <tabela>, String <nullColumnHack>, ContentValues <values>)

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Essa funo possui trs parmetros:

<tabela>: Neste parmetro voc informa o nome da tabela.

<nullColumnHack>: 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.

<values>: Este parmetro possui os valores a serem adicionados na tabela.

1.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 <tabela>,


<argumentos_condicao>)

ContentValues

<values>,

String

<condio>,

String

Essa funo possui trs parmetros:

<tabela>: Neste parmetro voc informa o nome da tabela.

<values>: Este parmetro possui os valores a serem adicionados na tabela.

<condio>: Aqui voc informa a condio para a realizao da atualizao dos dados.

<argumentos_condicao>: Aqui voc informa os

argumentos

relativos

condio

informada.

1.4

O mtodo delete
O mtodo delete realiza a remoo de dados na tabela (equivale ao comando

DELETE). Vejamos a sintaxe deste mtodo:


8

Trabalhando com o SQLite do Android

int delete(String <tabela>, String <condio>, String <argumentos_condicao>)

Essa funo possui trs parmetros:

<tabela>: Neste parmetro voc informa o nome da tabela.

<condio>: Aqui voc informa a condio para a realizao da remoo dos dados da
tabela.

<argumentos_condicao>: Aqui voc informa os argumentos relativos condio


informada.

1.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.6

Exemplos de SQL usando as funes do Android

1.6.1 Fazendo uma consulta a tabela (usando SELECT)

Comando SQL :

select codusuario, nome, idade from cadastro

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

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

Usando a funo query

query(cadastro, (new String[] {nome}),idade > 24, null, null, null, null);

1.6.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.6.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();

10

Trabalhando com o SQLite do Android

valor.put(idade, 27);
update(cadastro,valor, codusuario=1);

1.6.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.6.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);

11

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

O comando acima abre ou cria o banco de dados chamado dbbanco.

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()
int getColumnIndex(String columnName)

String getColumnName(int columnIndex)

int getInt(int columnIndex)

float getFloat(int columnIndex)

double getDouble(int columnIndex)

short getShort(int columnIndex)

Retorna o nmero de registros da


tabela.
Retorna o ndice da coluna na tabela,
atravs do seu nome, que passado
como parmetro.
Retorna o nome da coluna na tabela,
atravs do seu ndice, que passado
como parmetro.
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.
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.
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.
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.

Vamos mostrar agora um exemplo para que voc tenha um melhor entendimento do
mecanismo de banco de dados do Android.
12

Trabalhando com o SQLite do Android

Imagine uma tabela chamada cadastro com os seguintes dados abaixo:


nome
Amanda
Bianca
Bruna
Carla
Agora, observe a linha de cdigo abaixo:

idade
32
30
23
20

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
Bruna
Carla

idade
23
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();

13

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

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.

14

2. Desenvolvendo uma aplicao usando


banco de dados
Para tornar o aprendizado mais interessante vamos criar uma aplicao de cadastro
de pessoas. Nessa aplicao o usurio vai informar os seguintes dados: nome, telefone e
aniversario.
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: Nessa 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 ser feito 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:

Application Name: Aplicao de Cadastro


Project Name: AplicacaoDeCadastro
Package Name: com.aplicacaodecadastro
Minimum Required SDK: API 8: Android 2.2 (Froyo)
Target SDK: API 17: Android 4.2 (Jelly Bean)
Compile With: API 17: Android 4.2 (Jelly Bean)
Activity Name: MainActivity
Layout Name: activity_main
15

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Altere a estrutura de layout da sua aplicao para o LinearLayout e apague o


componente TextView. Feito isso adicione os seguintes componentes na sequncia:

Figura 1: Componentes da tela inicial

Componente
Propriedade
Text
TextView

Button1

Button2

Id

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

Width

fill_parent

Text

Cadastrar pessoa

Id

btListar

Width

fill_parent

Text

Listar pessoas cadastradas

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


seguinte:

Figura 2: Layout da Tela Inicial da Aplicao

16

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


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bem vindo a Aplicao de Cadastro de Pessoas.
Este um pequeno programa de demonstrao de cadastro.
Selecione uma das opes abaixo:" />
<Button
android:id="@+id/btCadastrar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Cadastrar Pessoa" />
<Button
android:id="@+id/btListar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Listar pessoas cadastradas" />
</LinearLayout>

Agora vamos criar mais uma tela 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 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:

Figura 3: Componentes da Tela de Cadastro

17

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Componente

Propriedade

Valor

TextView1

Text

Mdulo de cadastro. Digite seus dados abaixo:

TextView2

Text

Nome:

EditText1

Id

edNome

TextView3

Text

Telefone:

EditText2

Id

TextView3

Text

EditText3

Id

edEmail

Button1

Id

btCadastrar

Width

fill_parent

Text

Cadastrar

edTelefone
Email:

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


seguinte:

Figura 4: Layout da Tela de Cadastro

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


01
02
03
04
05
06
07
08
09
10
11
12
13

18

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mdulo de cadastro. Digite seus dados abaixo:" />

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome:" />
<EditText
android:id="@+id/edNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Telefone:" />
<EditText
android:id="@+id/edTelefone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email:" />
<EditText
android:id="@+id/edEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
<Button
android:id="@+id/btCadastrar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Cadastrar" />
</LinearLayout>

Agora vamos criar mais uma tela para nossa aplicao. O nome da nossa tela vai se
chamar lista.
Aps criar a tela da nossa aplicao, vamos adicionar os seguintes componentes:

19

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Figura 5: Componentes da tela de Listar

Componente
Propriedade
Text
TextView1
Text size

Valor
Lista de pessoas cadastradas
20sp

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:
Componente
LinearLayout (Horizontal)

Propriedade
Id

Valor
layoutNome

Agora dentro da estrutura layoutNome vamos adicionar os seguintes componentes


na sequncia:
Componenete
TextView

TextView

Propriedade
Text
Text color
Text size
Text
Text size
Id

Valor
Nome.
#0000FF
20sp
(Deixar em branco com espaos)
20sp
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:

20

Componente
LinearLayout (Horizontal)

Propriedade
Id

Valor
layoutTelefone

Agora dentro da estrutura layoutProfissao vamos adicionar

os

seguintes

componentes na sequncia:
Componenete
TextView

TextView

Propriedade
Text
Text color
Text size
Text
Text size
Id

Valor
Telefone.
#0000FF
20sp
(Deixar em branco com espaos)
20sp
txtTelefone

Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal) e em seguida


modifique as seguintes propriedades abaixo:
Componente
LinearLayout (Horizontal)

Propriedade
Id

Valor
layoutEmail

Agora dentro da estrutura layoutTelefone vamos adicionar os seguintes


componentes na sequncia:
Componenete
Propriedade
Valor
Text
Email.
TextView
Text color
#0000FF
Text size
20sp
Text
(Deixar em branco com espaos)
TextView
Text size
20sp
Id
txtEmail
Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal), como j foi
mostrado acima. E depois, modifique as seguintes propriedades abaixo:
Componente
LinearLayout (Horizontal)

Propriedade
Id
Gravity

Valor
layoutBotoes
Center

Agora dentro da estrutura layoutBotoes vamos adicionar os seguintes componentes


na sequncia:
Button
Componente
Button
Button

Propriedade
Id
Text
Id
Text

Valor
btVoltar
Voltar
btAvancar
A
21

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Agora vamos adicionar um Button logo aps a estrutura layoutBotoes que


criamos com as seguintes propriedades abaixo:
Componente
Button

Propriedade
Id
Text
Width

Valor
btMenuPrincipal
Menu principal
fill_parent vanar

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

Figura 6: Layout da Tela Listar

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21

22

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lista de pessoas cadastradas"
android:textSize="20sp" />
<LinearLayout
android:id="@+id/layoutNome"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
67
68
69
70
71
72
73
74
75
76
77
78
79
80

android:text="Nome:"
android:textColor="#0000FF"
android:textSize="20sp" />
<TextView
android:id="@+id/txtNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0000FF"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutTelefone"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Telefone"
android:textColor="#0000FF"
android:textSize="20sp" />
<TextView
android:id="@+id/txtTelefone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0000FF"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email:"
android:textColor="#0000FF"
android:textSize="20sp" />
<TextView
android:id="@+id/txtEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0000FF"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutBotoes"

23

Introduo ao Desenvolvimento Mvel com Android

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

Josiel Silva Moura

android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<Button
android:id="@+id/btVoltar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Voltar" />
<Button
android:id="@+id/btAvancar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Avanar" />
</LinearLayout>
<Button
android:id="@+id/btMenuPrincipal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Menu Principal" />
</LinearLayout>

No arquivo MainActivity.java, vamos adicionar o seguinte cdigo abaixo:


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

24

package com.aplicacaodecadastro;
import
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.app.AlertDialog;
android.content.Context;
android.database.Cursor;
android.database.sqlite.SQLiteDatabase;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.EditText;
android.widget.TextView;

public class MainActivity extends Activity {


Button btCadastarPessoas, btListar;
Button btCadastrarContato;
Button btVoltar, btAvancar, btMenuPrincipal;
TextView txtNome, txtTelefone, txtEmail;
EditText edNome, edTelefone, edEmail;
SQLiteDatabase db;
Cursor dados;
int numero_registros = 0;
int posicao;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

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, " +
"telefone text not null, email text not null)");
} catch(Exception e) {
exibirMensagem(e.toString());
}
CarregarTelaPrincipal();

public void CarregarTelaPrincipal() {


setContentView(R.layout.activity_main);
btCadastarPessoas = (Button) findViewById(R.id.btCadastrarPessoas);
btListar = (Button) findViewById(R.id.btListar);
btCadastarPessoas.setOnClickListener(new View.OnClickListener() {

});

@Override
public void onClick(View arg0) {
CarregarTelaCadastro();
}

btListar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
CarregarTelaListagemPessoas();
}
});
}
public void CarregarTelaCadastro() {
setContentView(R.layout.cadastro);
edNome = (EditText) findViewById(R.id.edNome);
edTelefone = (EditText) findViewById(R.id.edTelefone);
edEmail = (EditText) findViewById(R.id.edEmail);
btCadastrarContato = (Button) findViewById(R.id.btCadContato);
dados = db.query("cadusuarios", (new String[] { "nome", "telefone",
"email" }), null, null, null, null, null);
numero_registros = dados.getCount();
btCadastrarContato.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
try {

String nome = edNome.getText().toString();


String telefone = edTelefone.getText().toString();
String email = edEmail.getText().toString();
numero_registros++;
db.execSQL("insert into cadusuarios values("

25

Introduo ao Desenvolvimento Mvel com Android

90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

26

Josiel Silva Moura

+ String.valueOf(numero_registros) + ",'" +

nome

+ "','" + telefone + "','" + email + "')");


exibirMensagem("Registro cadastrado com sucesso");

});

} catch (Exception e) {
exibirMensagem("Erro ao cadastrar:"+e.getMessage());
}
CarregarTelaPrincipal();

public void CarregarTelaListagemPessoas() {


try {
dados = db.query("cadusuarios", (new String[] { "nome",
"telefone", "email" }), null, null, null, null, null);
numero_registros = dados.getCount();
posicao = 1;
} catch (Exception e) {
exibirMensagem("Erro ao obter dados do banco");
CarregarTelaPrincipal();
}
if (numero_registros == 0) {
exibirMensagem("Nenhum registro cadastrado");
CarregarTelaPrincipal();
}
else {
setContentView(R.layout.listar);
btVoltar = (Button) findViewById(R.id.btVoltar);
btAvancar = (Button) findViewById(R.id.btAvancar);
btMenuPrincipal = (Button) findViewById(R.id.btMenuPrincipal);
txtNome = (TextView) findViewById(R.id.txtNome);
txtTelefone = (TextView) findViewById(R.id.txtTelefone);
txtEmail = (TextView) findViewById(R.id.txtEmail);
dados.moveToFirst();
txtNome.setText(dados.getString(dados.getColumnIndex("nome")));
txtTelefone.setText(dados.getString(dados.getColumnIndex("telefone")));
txtEmail.setText(dados.getString(dados.getColumnIndex("email")));

)));
;

btAvancar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (posicao == numero_registros){
exibirMensagem("ltimo registro");
}else{
posicao++;
dados.moveToNext();
txtNome.setText(dados.getString(dados.getColumnIndex("nome")));
txtTelefone.setText(dados.getString(dados.getColumnIndex("email"
txtEmail.setText(dados.getString(dados.getColumnIndex("email")))

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190

}
});

btVoltar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (posicao == 1){
exibirMensagem("Primeiro registro");
}else{
posicao--;
dados.moveToPrevious();
txtNome.setText(dados.getString(dados.getColumnIndex("nome")));
txtTelefone.setText(dados.getString(dados.getColumnIndex("email"

)));

txtEmail.setText(dados.getString(dados.getColumnIndex("email")));
}
}
});
}
btMenuPrincipal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CarregarTelaPrincipal();
}
});
}
public void exibirMensagem(String mensagem) {

AlertDialog.Builder dialogo = new AlertDialog.Builder(MainActivity.this);


dialogo.setTitle("Aviso");
dialogo.setMessage(mensagem);
dialogo.setNeutralButton("OK", null);
dialogo.show();

27

Introduo ao Desenvolvimento Mvel com Android

Josiel Silva Moura

Aps digitarmos os comandos da classe acima, execute a aplicao acima. O


resultado voc confere na imagem seguinte:

Aplicao em execuo

28

You might also like