Professional Documents
Culture Documents
MANIPULAO DE BANCO DE
DADOS EM
ORIENTADO A PROJETO
2015
MANIPULAO DE
BANCO DE DADOS EM
ORIENTADO A PROJETOS
2 edio
2013
4
Sumrio
1.
O mtodo query................................................................................ 7
1.2
1.3
O mtodo update.............................................................................. 8
1.4
1.5
1.6
2.
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:
<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.
1.2
O mtodo insert
O mtodo insert realiza uma insero de dados na tabela (equivale ao comando
1.3
O mtodo update
O mtodo update realiza uma atualizao de dados na tabela (equivale ao
ContentValues
<values>,
String
<condio>,
String
<condio>: Aqui voc informa a condio para a realizao da atualizao dos dados.
argumentos
relativos
condio
informada.
1.4
O mtodo delete
O mtodo delete realiza a remoo de dados na tabela (equivale ao comando
<condio>: Aqui voc informa a condio para a realizao da remoo dos dados da
tabela.
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:
1.6
Comando SQL :
Comando SQL :
query(cadastro, (new String[] {nome}),idade > 24, null, null, null, null);
Comando SQL :
Comando SQL :
10
valor.put(idade, 27);
update(cadastro,valor, codusuario=1);
Comando SQL :
delete(cadastro, codusuario=1,null);
Comando SQL :
create
table
cadastro(codusuario
integer
primary
key
autoincrement, nome
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
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()
boolean moveToPrevious()
boolean moveToNext()
boolean moveToLast()
int getCount()
int getColumnIndex(String columnName)
Vamos mostrar agora um exemplo para que voc tenha um melhor entendimento do
mecanismo de banco de dados do Android.
12
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
Retorna o valor do campo nome do primeiro registro, no caso, Bruna. Veja agora
a prxima linha:
Retorna o valor do campo idade do primeiro registro, no formato int. Neste caso,
o valor retornado 23. A linha:
c.moveToNext();
13
nome = c.getString(0);
Retorna o valor do campo nome do segundo registro, no caso, Carla. Veja agora
a prxima linha:
Retorna o valor do campo idade do segundo registro, no formato int. Neste caso,
o valor retornado 20.
14
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.
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:
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
16
<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:
17
Componente
Propriedade
Valor
TextView1
Text
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:
18
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
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
TextView
Propriedade
Text
Text color
Text size
Text
Text size
Id
Valor
Nome.
#0000FF
20sp
(Deixar em branco com espaos)
20sp
txtNome
20
Componente
LinearLayout (Horizontal)
Propriedade
Id
Valor
layoutTelefone
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
Propriedade
Id
Valor
layoutEmail
Propriedade
Id
Gravity
Valor
layoutBotoes
Center
Propriedade
Id
Text
Id
Text
Valor
btVoltar
Voltar
btAvancar
A
21
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:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
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
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
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>
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;
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();
});
@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 {
25
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
+ String.valueOf(numero_registros) + ",'" +
nome
});
} catch (Exception e) {
exibirMensagem("Erro ao cadastrar:"+e.getMessage());
}
CarregarTelaPrincipal();
)));
;
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) {
27
Aplicao em execuo
28