android - manipulação de db.pdf
TRANSCRIPT
-
8/16/2019 Android - Manipulação de DB.pdf
1/28
MANIPULAÇÃO DE BANCO DEDADOS EM
ORIENTADO A PROJETO
JOSIEL SILVA MOURA
2 15
-
8/16/2019 Android - Manipulação de DB.pdf
2/28
-
8/16/2019 Android - Manipulação de DB.pdf
3/28
Trabalhando com o SQLite do Android
-
8/16/2019 Android - Manipulação de DB.pdf
4/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
JOSIEL SILVA MOURA
MANIPULAÇÃO DEBANCO DE DADOS EM
ORIENTADO A PROJETOS
2ª edição
2013
4
-
8/16/2019 Android - Manipulação de DB.pdf
5/28
Trabalhando com o SQLite do Android
-
8/16/2019 Android - Manipulação de DB.pdf
6/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Sumário1.
Trabalhando com o SQLite do Android ......................................................... 7
1.1
O método query................................................................................ 7
1.2
O método insert ................................................................................ 7
1.3
O método update .............................................................................. 8
1.4
O método delete ............................................................................... 8
1.5
O método execSQL .......................................................................... 9
1.6
Exemplos de SQL usando as funções 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 aplicação usando banco de dados ............................ 15
6
-
8/16/2019 Android - Manipulação de DB.pdf
7/28
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 métodos, conforme é mostrado em
seguida:
1.1 O método query
O método query realiza uma consulta SQL no banco de dados (equivale ao
comando SELECT). Essa função retorna uma instância (objeto) do tipo Cursor . Vejamos a
sintaxe do método em seguida:
Cursor query( St r i ng , St r i ng[ ] , St r i ng,St r i ng[ ] , St r i ng , St r i ng , St r i ng )
Vamos conhecer os parâmetros que iremos utilizar dessa função:
Neste parâmetro você informa o nome da tabela.
: Neste parâmetro a(s) coluna(s) que o banco possui.
: Aqui você informa a condição de busca de dados. Este parâmetro
funciona como se fosse a clausula where do SQL, onde é informada a condição de busca.
O restante dos parâmetros iremos trabalhar em seu valor null.
1.2 O método insert
O método insert realiza uma inserção de dados na tabela (equivale ao comando
INSERT). Vejamos a sintaxe deste método:
l ong i nsert ( St r i ng , St r i ng , Cont ent Val ues )
7
-
8/16/2019 Android - Manipulação de DB.pdf
8/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Essa função possui três parâmetros:
: Neste parâmetro você informa o nome da tabela.
: O SQL não permite a inserção de linhas em branco, logo, se o valor
de uma coluna for vazio, ele será iniciado com o valor null.
: Este parâmetro possui os valores a serem adicionados na tabela.
1.3 O método update
O método update realiza uma atualização de dados na tabela (equivale ao
comando UPDATE). Vejamos agora a sintaxe deste método:
i nt updat e( St r i ng , Cont ent Val ues , St r i ng , St r i ng)
Essa função possui três parâmetros:
: Neste parâmetro você informa o nome da tabela.
: Este parâmetro possui os valores a serem adicionados na tabela.
: Aqui você informa a condição para a realização da atualização dos dados.
: Aqui você informa os argumentos relativos à condição
informada.
1.4 O método delete
O método delete realiza a remoção de dados na tabela (equivale ao comandoDELETE). Vejamos a sintaxe deste método:
8
-
8/16/2019 Android - Manipulação de DB.pdf
9/28
Trabalhando com o SQLite do Android
i nt del et e( St r i ng , St r i ng , St r i ng )
Essa função possui três parâmetros:
: Neste parâmetro você informa o nome da tabela.
: Aqui você informa a condição para a realização da remoção dos dados da
tabela.
: Aqui você informa os argumentos relativos à condição
informada.
1.5 O método execSQL
O método execSQL executa uma consulta SQL (como CREATE TABLE, INSERT
INTO, UPDATE, DELETE e etc.). Não é possível usar a clausula SELECT nesta função.
Para esse tipo de situação, use o método query. Vejamos a sintaxe deste método:
voi d execSQL( St r i ng sql )
Vamos fazer algumas comparações da função “execSQL”, que permite sintaxes de
comando SQL com as demais funções, como “update”,”insert” e “delete” para a realização
de uma consulta SQL.
1.6 Exemplos de SQL usando as funções do Android
1.6.1 Fazendo uma consulta a tabela (usando SELECT)
• Comando SQL :
select codusuar i o, nome, i dade from cadast r o
9
-
8/16/2019 Android - Manipulação de DB.pdf
10/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
• Usando a função query :
quer y(“cadast r o”, ( new St r i ng[ ] {“codusuar i o”, “nome”, “i dade”}) , null, null, null,
null, null) ;
• Comando SQL :
select nome from cadast r o where i dade > 24
• Usando a função query
quer y( “cadast r o”, ( new St r i ng[ ] {“nome”}) , “i dade > 24”, null, null, null, null) ;
1.6.2 Inserindo dados (usando INSERT)
• Comando SQL :
insert into cadast r o( nome, i dade) values( ‘ Luci ano’ , 23)
• Usando a função execSQL
execSQL( “i nser t i nt o cadast r o( nome, i dade) val ues( ‘ Luci ano’ , 23) ; ”) ;
• Usando a função insert :
Cont ent Val ues val or = new Cont ent Val ues( ) ;
val or . put ( “nome”, “Luci ano” ) ;
val or . put ( “i dade”, “23”) ; i nser t ( “cadast r o”, null, val or ) ;
1.6.3 Atualizando dados (usando UPDATE)
• Comando SQL :
update cadast r o set i dade = 27 where codusuar i o=1
• Usando a função execSQL
execSQL( “updat e cadast r o set i dade = 27 wher e ( codusuari o=1) ; ”) ;
•
Usando a função update :Cont ent Val ues val or = new Cont ent Val ues( ) ;
10
-
8/16/2019 Android - Manipulação de DB.pdf
11/28
Trabalhando com o SQLite do Android
val or . put ( “i dade”, “27”) ;
updat e( “cadast r o”, val or, “codusuar i o=1”) ;
1.6.4 Removendo dados (usando DELETE)
• Comando SQL :
delete from cadast r o where codusuar i o=1
• Usando a função execSQL
execSQL( “del et e f r omcadast r o where ( codusuar i o=1) ; “) ;
• Usando a função delete :
del et e( “cadast r o”, “codusuar i o=1”, null) ;
1.6.5 Criando uma tabela (usando CREATE TABLE)
• Comando SQL :
create table cadast r o(codusuar i o i nt eger pr i mary key aut oi ncr ement , nome
t ext not nul l , i dade i nt eger not nul l )
• Usando a função execSQL
execSQL( “cr eat e tabl e cadast r o(codusuari o i nt eger pr i mar y key aut oi ncr ement ,
nome t ext not nul l , i dade i nt eger not nul l ) ; ”) ;
Agora vamos conhecer as funções responsáveis por criar e abrir banco de dados no
Android.
SQLDat abase openOr Cr eat eDat abase( St r i ng nome_do_banco, i nt mode, Cursor Fact ory cf ) ;
Essa função 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
parâmetro, que normalmente é null. Veja um exemplo abaixo:
SQLDat abase db;
db = openOr Cr eat eDat abase( "dbbanco", Context . MODE_PRIVATE , null) ;
11
-
8/16/2019 Android - Manipulação de DB.pdf
12/28
Introdução ao Desenvolvimento Móvel 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 função query, ela
retorna um objeto do tipo Cursor , onde nela estão armazenados os registros solicitados
pela consulta. Vamos ver abaixo os métodos da classe Cursor :
Método Descrição
bool ean moveToFi r st ( )Move o cursor para o primeiro registroda tabela.
bool ean moveToPr evi ous( )Move o cursor para o registro anterioda tabela.
bool ean moveToNext ( )Move o cursor para o próximo registroda tabela.
bool ean moveToLast ( )Move o cursor para o último registroda tabela.
i nt get Count ( ) Retorna o número de registros databela.
i nt get Col umnI ndex(St r i ng col umnName) Retorna o índice da coluna na tabela,através do seu nome, que é passadocomo parâmetro.
St r i ng get Col umnName( i nt col umnI ndex)Retorna o nome da coluna na tabela,através do seu índice, que é passadocomo parâmetro.
i nt get I nt ( i nt col umnI ndex)
Retorna o valor do campo, tendo
como seu parâmetro o seu índice,convertido em int. Lembre-se: o índicedo primeiro campo é 0, o índice dosegundo campo é 1 e assim pordiante.
f l oat get Fl oat ( i nt col umnI ndex)Retorna o valor do campo, tendocomo seu parâmetro o seu índice,convertido em float. Lembre-se: oíndice do primeiro campo é 0, o índicedo segundo campo é 1 e assim pordiante.
doubl e get Doubl e( i nt col umnI ndex)Retorna o valor do campo, tendocomo seu parâmetro o seu índice,convertido em double. Lembre-se: oíndice do primeiro campo é 0, o índicedo segundo campo é 1 e assim pordiante.
shor t get Short ( i nt col umnI ndex)
Retorna o valor do campo, tendocomo seu parâmetro o seu índice,convertido em short. Lembre-se: oíndice do primeiro campo é 0, o índicedo segundo campo é 1 e assim pordiante.
Vamos mostrar agora um exemplo para que você tenha um melhor entendimento do
mecanismo de banco de dados do Android.
12
-
8/16/2019 Android - Manipulação de DB.pdf
13/28
Trabalhando com o SQLite do Android
Imagine uma tabela chamada “cadastro” com os seguintes dados abaixo:
nome idade Amanda 32
Bianca 30
Bruna 23Carla 20
Agora, observe a linha de código abaixo:
SQLDat abase db;db = openOr Cr eat eDat abase( "dbbanco", Cont ext . MODE_PRIVATE , null) ;Cur sor c = db. query( "cadast r o", ( new St r i ng[ ] {"nome", "i dade"}) , "i dade < 32" ,null, null, null, null) ;
Observe que a linha acima cria um objeto do tipo Cursor que vai receber o resultado
da consulta da função query, que retorna uma instância do mesmo tipo. Logo, a instância
retornada pela função query na verdade, retorna uma tabela resultante da consulta. Veja
esse resultado abaixo:
nome idade Bruna 23
Carla 20
Continuando a codificação. Veja a linha abaixo:
c. moveToFi r st ( ) ;
A linha acima coloca o ponteiro no primeiro registro da tabela. A linha:
St r i ng nome = c. get St r i ng( 0) ;
Retorna o valor do campo “nome” do primeiro registro, no caso, “Bruna”. Veja agora
a próxima linha:
i nt i dade = c. get I nt ( 1) ;
Retorna o valor do campo “idade” do primeiro registro, no formato int. Neste caso,
o valor retornado é 23. A linha:
c. moveToNext ( ) ;
13
-
8/16/2019 Android - Manipulação de DB.pdf
14/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
A linha acima avança para o próximo registro. A linha:
nome = c. getSt r i ng( 0) ;
Retorna o valor do campo “nome” do segundo registro, no caso, “Carla”. Veja agora
a próxima linha:
i nt i dade = c. get I nt ( 1) ;
Retorna o valor do campo “idade” do segundo registro, no formato int. Neste caso,
o valor retornado é 20.
14
-
8/16/2019 Android - Manipulação de DB.pdf
15/28
2. Desenvolvendo uma aplicação usando
banco de dados
Para tornar o aprendizado mais interessante vamos criar uma aplicação de cadastro
de pessoas. Nessa aplicação o usuário vai informar os seguintes dados: nome, telefone e
aniversario.
Essa aplicação vai possuir três telas, cada uma com as seguintes
funcionalidades:
Tela principal (tela com opções): Nessa tela da aplicação teremos um menu que dará
acesso ao cadastro do usuário e a visualização dos usuários cadastrados.
Tela de cadastro: Nessa tela o usuário irá preencher os campos solicitados pela aplicação
e em seguida o mesmo poderá cadastrar para que as informações sejam registradas.
Tela de visualização de dados: Nessa tela poderão ser visualizados os dados
(usuários) cadastrados. Se nada foi cadastrado na aplicação, será exibida uma
mensagem informando essa situação.
Nessa aplicação para armazenar os dados será feito uso de uma estrutura
de dados do tipo “lista” (duplamente encadeada). Nessa estrutura os dados são
armazenados em sequência, e acessados tanto sequencialmente e na sua ordem
inversa de cadastro (avançando e retrocedendo pelos registros).
Bom, vamos construir a nossa aplicação. Crie um novo projeto com os
seguintes dados abaixo:
Appl icat ion Name: Aplicação de CadastroProject Name: AplicacaoDeCadastroPackage Name: com.aplicacaodecadastroMinimum 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: MainActivityLayout Name: activity_main
15
-
8/16/2019 Android - Manipulação de DB.pdf
16/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Altere a estrutura de layout da sua aplicação para o LinearLayout e apague o
componente TextView. Feito isso adicione os seguintes componentes na sequência:
Figura 1: Componentes da tela inicial
Componente Propriedade Valor
TextView Text Bem vindo a Aplicação de Cadastrode Pessoas. Este é um pequenoprograma de demonstração decadastro. Selecione uma das opçõesabaixo:
Button1 Id btCadastrar
Width fill_parent
Text Cadastrar pessoa
Button2 Id btListar
Width fill_parent
Text Listar pessoas cadastradas
Seguindo os passos acima, a aplicação deve estar de acordo com a figura
seguinte:
Figura 2: Layout da Tela Inicial da Aplicação
16
-
8/16/2019 Android - Manipulação de DB.pdf
17/28
Vejamos agora a estrutura XML da tela principal da nossa aplicação:
01
02
03
0405
06
07
08
09
10
11
12
13
14
1516
17
18
19
20
21
22
23
24
25
2627
28
29
Agora vamos criar mais uma tela para nossa aplicação. Para isso vamos clicar com o
botão direito sobre a pasta “layout” e em seguida vamos chamar o recurso de criação 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 sequência:
Figura 3: Componentes da Tela de Cadastro
17
-
8/16/2019 Android - Manipulação de DB.pdf
18/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Componente Propriedade Valor
TextView1 Text Módulo de cadastro. Digite seus dados abaixo:
TextView2 Text Nome:
EditText1 Id edNome
TextView3 Text Telefone:
EditText2 Id edTelefone
TextView3 Text Email:
EditText3 Id edEmail
Button1 Id btCadastrar
Width fill_parent
Text Cadastrar
Seguindo os passos acima, a aplicação deve estar de acordo com a figuraseguinte:
Figura 4: Layout da Tela de Cadastro
Vamos ver agora a estrutura XML da tela de cadastro da aplicação:
010203040506070809
10111213
18
-
8/16/2019 Android - Manipulação de DB.pdf
19/28
141516171819
202122232425262728293031323334
353637383940414243444546474849
505152535455565758596061626364
6566676869
Agora vamos criar mais uma tela para nossa aplicação. O nome da nossa tela vai se
chamar “lista”.
Após criar a tela da nossa aplicação, vamos adicionar os seguintes componentes:
19
-
8/16/2019 Android - Manipulação de DB.pdf
20/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Figura 5: Componentes da tela de Listar
Componente Propriedade Valor
TextView1 Text Lista de pessoas cadastradas
Text size 20sp
Ainda não acabou. Vamos adicionar após o texto uma nova estrutura de layout do
tipo LinearLayout (Horizontal), e em seguida vamos mudar as seguintes propriedades dela,
conforme abaixo:
Componente Propriedade Valor LinearLayout (Horizontal) Id layoutNome
Agora dentro da estrutura “layoutNome” vamos adicionar os seguintes componentes
na sequência:
Componenete Propriedade Valor
TextView Text Nome.Text color #0000FF
Text size 20spTextView Text (Deixar em branco com espaços)
Text size 20sp
Id txtNome
Logo após a estrutura LinearLayout que chamamos de “layoutNome”, vamos
adicionar uma nova estrutura LinearLayout (Horizontal), e em seguida modifique as
seguintes propriedades abaixo:
20
-
8/16/2019 Android - Manipulação de DB.pdf
21/28
Componente Propriedade Valor LinearLayout (Horizontal) Id layoutTelefone
Agora dentro da estrutura “layoutProfissao” vamos adicionar os seguintes
componentes na sequência:
Componenete Propriedade Valor
TextView Text Telefone.Text color #0000FF
Text size 20sp
TextView Text (Deixar em branco com espaços)
Text size 20sp
Id txtTelefone
Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal) e em seguida
modifique as seguintes propriedades abaixo:
Componente Propriedade Valor LinearLayout (Horizontal) Id layoutEmail
Agora dentro da estrutura “layoutTelefone” vamos adicionar os seguintescomponentes na sequência:
Componenete Propriedade Valor
TextView Text Email.Text color #0000FF
Text size 20sp
TextView Text (Deixar em branco com espaços)
Text size 20spId txtEmail
Agora vamos adicionar uma nova estrutura LinearLayout (Horizontal), como já foi
mostrado acima. E depois, modifique as seguintes propriedades abaixo:
Componente Propriedade Valor LinearLayout (Horizontal) Id layoutBotoes
Gravity Center
Agora dentro da estrutura “layoutBotoes” vamos adicionar os seguintes componentes
na sequência:
Button
Componente Propriedade Valor Button Id btVoltar
Text Voltar
Button Id btAvancarText A
21
-
8/16/2019 Android - Manipulação de DB.pdf
22/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Agora vamos adicionar um Button logo após a estrutura “layoutBotoes” que
criamos com as seguintes propriedades abaixo:
Componente Propriedade Valor
Button Id btMenuPrincipalText Menu principalWidth fill_parent vançar
Seguindo todos os passos acima, o layout da aplicação 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:010203040506
07080910111213141516171819
2021
-
8/16/2019 Android - Manipulação de DB.pdf
23/28
2223242526
27282930313233343536373839
404142434445464748495051
52535455565758596061626364
656768697071727374757677
787980
android:text="Nome:" android:textColor="#0000FF" android:textSize="20sp" />
-
8/16/2019 Android - Manipulação de DB.pdf
24/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
8182838485
86878889909192939495969798
99100101102103104105
android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" >
No arquivo “MainActivity.java”, vamos adicionar o seguinte código abaixo:
0102
03040506070809101112131415
161718192021222324252627
282930
package com.aplicacaodecadastro;
import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import 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 {
24
-
8/16/2019 Android - Manipulação de DB.pdf
25/28
3132333435
36373839404142434445464748
495051525354555657585960
61626364656768697071727374
757677787980818283848586
878889
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
-
8/16/2019 Android - Manipulação de DB.pdf
26/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
9091929394
9596979899100101102103104105106107
108109110111112113114115116117118119
120121122123124125126127128129130131132
133134135136137138139140141142143144
145146147
+ 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")));
26
-
8/16/2019 Android - Manipulação de DB.pdf
27/28
148149150151152
153154155156157158159160161162163164165
166167168169170171172173174175176177
178179180181182183184185186187188189190
}
}});
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
-
8/16/2019 Android - Manipulação de DB.pdf
28/28
Introdução ao Desenvolvimento Móvel com Android Josiel Silva Moura
Após digitarmos os comandos da classe acima, execute a aplicação acima. O
resultado você confere na imagem seguinte:
Aplicação em execução