Tutorial SQLite para Android: CRUD e MVC
Tutorial SQLite para Android: CRUD e MVC
Android
Preparado por: Joseph Azar
Objectifs
• Neste tutorial, você vai gravar os dados no banco de dados SQLite em
ajudar com um exemplo simples e realizar algumas operações básicas (CRUD) do SQLite.
Criar
ler
Atualizar
oD: Excluir
• Você aprenderá a usar o modelo MVC (Modelo-Visão-Controlador). Você vai separar
seu projeto em pacotes de modelos, visões e controladores para melhor estruturar o
projeto
• Você descobrirá o LayoutInflater e sua utilização
• Você descobrirá o elemento ScrollView
• Você vai criar uma view (ex: TextView) programaticamente usando Java
• Você aprenderá a usar AlertDialog
Introdução
SQLite é um banco de dados leve que já está integrado ao framework Android. É uma
banco de dados de código aberto que consome apenas 250 Ko de memória durante a execução.
O banco de dados SQLite suporta um número limitado de tipos de dados. Esses tipos
de dados são:
• Texto
• Integer
• Real
• BLOB
Assim, todos os outros tipos de dados devem ser convertidos nos tipos de dados mencionados.
dessus antes de inseri-los no banco de dados. SQLite suporta os recursos
1
de bases de dados relacionais padrão, como a sintaxe SQL, as transações e a
sintaxe preparada.
2
Criar uma base de dados
Crie uma nova classe chamada SQLiteHelper e estenda-a com a classe
[Link] é uma classe auxiliar que gerencia a criação e a
gestão de versões do banco de dados SQLite no Android. Assim, na classe
SQLiteHelper, vamos implementar os métodos onCreate(), onUpgrade() e onOpen()
da classe SQLiteOpenHelper para criar a tabela para o nosso aplicativo.
Vamos criar uma tabela de estudantes com três colunas: ID do tipo inteiro, Nome do tipo
texto etgroupedu tipo texto.
3
4
No código acima, criamos uma tabela de banco de dados para armazenar os
informations des etudiants. Ici, nous récupérons l'instanceSQLiteDatabaseet créons une
nova tabela de banco de dados usando o método onCreate() da nossa classe
de assistência. Agora, podemos criar os métodos para realizar diversas operações
ligadas ao banco de dados.
Crie dois pacotes, respectivamente Managers e Views. Mova a classe MainActivity para
o packageViewset a classeSQLiteHelperpara o packageManagers
5
Criar um modelo de estudantes
Crie um novo pacote "Models". Sob este pacote, crie uma nova classe "Student".
A classe Student será utilizada para instanciar objetos student que usaremos para
inserir e extrair dados do banco de dados.
6
Inserir informações na base de dados
SQLiteDatabase db =[Link]();
7
Em seguida, crie um objeto ContentValues e adicione as informações ao objeto a ser inserido.
ContentValues é essencialmente uma classe usada para armazenar um conjunto de valores
podendo ser tratadas pelo ContentResolver.
Finalmente, com a ajuda do método insert() da instância do banco de dados, adicione os valores ao
tabela desejada. Precisamos passar o nome da tabela do banco de dados e o objeto
ContentValues como argumentos para o método insert(). Feche também o acesso ao
base de dados uma vez a inserção concluída.
SQLiteDatabase db =[Link]();
8
Em seguida, usaremos o método query() para implementar a condição e recuperar os
dados da tabela. Ele retorna um objeto Cursor através do qual podemos iterar sobre o conjunto
dos resultados. Aqui está o exemplo de método para recuperar os dados com base em uma
condition:
públicoEstudante getEstudante(intid) {
SQLiteDatabase db =[Link]();
Cursor cursor = [Link](ajudanteDb.TABLE_STUDENTS, novoString[] { ajudanteDb.KEY_ID,
ajudanteDb.KEY_NAME, dbHelper.GRUPO_CHAVE}, dbHelper.KEY_ID + "=?",
novoString[] { [Link](id) },null, null, null, nulo);
se(cursor != nulo)
[Link]();
Estudante estudante =novoAluno([Link]([Link](0)),
[Link](1), [Link](2));
retornarestudante
}
9
públicoList<Student> obterTodosOsEstudantes() {
SQLiteDatabase db = [Link]();
List<Student> studentList = novoArrayList<Aluno>();
String selectQuery = SELECIONE * DE + ajudanteDeBD.TABLE_STUDENTS;
Cursor cursor = [Link](selectQuery, null);
se([Link]()) {
do {
Estudante estudante =novoEstudante([Link]([Link](0)),
[Link](1),[Link](2));
[Link](student);
} enquanto([Link]());
}
retornarstudentList;
}
10
Remover informações do banco de dados
Para eliminar entradas da tabela do banco de dados, precisamos definir um critério de
seleção para identificar as entradas a serem removidas. Portanto, vamos usar o método delete()
da base de dados que requer três argumentos:
Combinados, esses argumentos criarão uma solicitação de exclusão que funcionará exatamente
da mesma forma que uma consulta SQL. Aqui está o exemplo de código para excluir os dados
da mesa:
public voiddeleteStudent(Student student) {
SQLiteDatabase db =[Link]();
[Link](ajudanteDeBanco.TABLE_STUDENTS, ajudanteDb.KEY_ID + " = ?",
novoString[] { [Link]([Link]()) });
[Link]();
}
Atualizar as informações
Podemos atualizar as informações em nossa tabela de banco de dados usando
o método update() da nossa instância de banco de dados. Para atualizar a tabela, nós
devemos adicionar os valores no objeto ContentValues e definir um critério de seleção para
identificar as entradas a modificar. Aqui está o exemplo de código:
11
Nós terminamos agora com os pacotes, gerenciadores e modelos nos quais nós
criamos as operações de banco de dados. Agora vamos criar as visualizações.
12
Vamos definir o OnClickListener do botão "Criar um estudante".
Clique com o botão direito no pacote 'Views', crie uma nova classe
OnClickListenerCreateStudent" e insira o seguinte código:
13
Préparez le formulaire de saisie d’un etudiant.
Clique com o botão direito em res/layout/è Cliquez sur "New"è Clique em "Arquivo"> Nomeie-o
formulário_de_entrada_do_aluno.xml
<RelativeLayoutxmlns:android="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editTextStudentname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:hint="Nom de l'etudiant"
android:singleLine="true">
<solicitarFoco/>
</EditText>
<EditText
android:id="@+id/editTextGrupoEstudante"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editTextStudentname"
android:hint="Groupe de l'etudiant"
android:singleLine="true"/>
</RelativeLayout>
14
Mostrar o formulário "criar um estudante" para o usuário
Volte e abra sua classe "[Link]".
Adicione o seguinte código à sua classe (abaixo da função onClick (View view)) para abrir o
dialogue “Créer un etudiant”.
[Link](context)
.setView(formElementsView)
.setTitle(Crie um estudante)
.setPositiveButton(Adicionar,
[Link]() {
public voidonClick(DialogInterface dialog,intid) {
[Link]();
}
}).mostrar();
15
Nota:
Em outras palavras, ele aceita um arquivo XML como entrada e constrói os objetosView a partir de
este
Inflater significa ler o arquivo XML que descreve um layout (ou elemento GUI) e criar os
objetos reais que lhe correspondem, e assim tornar o objeto visível em uma aplicação Android.
Se você executar o aplicativo após ter adicionado o código acima. Depois de pressionar o
botão "Criar um estudante", você deve obter o resultado abaixo:
16
Gravar a entrada do usuário
Abra a classe OnClickListenerCreateStudent. Na método onClick() de AlertDialog, nós
registraremos as informações do estudante.
Usando a classe StudentHandler já criada no pacote Managers, nós vamos
salvar as informações inseridas
[Link](context)
.setView(formElementsView)
.setTitle(Crie um estudante)
.setBotãoPositivo(Adicionar,
[Link]() {
pública voidonClick(DialogInterface dialog, inteiroid) {
Estudante estudante=novoEstudante();
String studentName =[Link]().toString();
String studentGroup =
[Link]().toString();
[Link](studentName);
[Link](grupoDoAluno);
intcreatedStudent= novo
StudentHandler(context).addStudent(student);
[Link]();
}
}).mostrar();
17
Contar os registros do banco de dados Android
SQLite
No seu /layout/activity_main.xml, coloque um TextView abaixo do seu botão 'Criar um'
estudante
18
Agora, queremos criar o método count na classe Managers/StudentHandler.
Abra a classe StudentHandler e adicione o método abaixo:
public intcontar() {
SQLiteDatabase db =[Link]();
String sql = SELECIONE * DE+ ajudanteDb.TABELA_ALUNOS;
intrecordCount = [Link](sql, null).getCount();
[Link]();
retornarrecordCount;
}
19
Abra a classe MainActivity, crie o método countRecords() e chame-o no onCreate().
20
[Link](context)
.setView(formElementsView)
.setTitle(Crie um estudante)
.setPositiveButton(Adicionar,
[Link]() {
public voidonClick(DialogInterface dialog, intid) {
Student student=novoEstudante();
String studentName =[Link]().toString();
String studentGroup =
[Link]().toString();
[Link](studentName);
[Link](studentGroup);
inteirocreatedStudent= novo
StudentHandler(context).addStudent(aluno);
}).mostrar();
21
Execute sua aplicação e tente criar um novo estudante. Quando a aplicação estiver
criada pela primeira vez, ela exibe o texto "0 registros encontrados". Após ter criado
um novo estudante, ela mostrará "1 registro encontrado"
22
Ler registros do banco de dados SQLite
Abra o arquivo res/layout/activity_main.xml e coloque um ScrollView com um LinearLayout.
o interior sob o TextView "textViewRecordCount".
23
No seu [Link], crie o método readRecords(). Isso exibirá os
registros do banco de dados na interface do usuário.
public voidlerRegistros() {
se([Link]() >0) {
intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();
senão{
24
Agora vamos criar da mesma forma o método readRecords() na classe
OnClickListenerCreateStudentlorsque nós criamos um novo estudante para atualizar o
conteúdo doScrollView.
25
public voidlerRegistros(Context contexto, View visualizacao) {
se([Link]() > 0) {
intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();
senão{
26
[Link](context)
.setView(formElementsView)
.setTitle(Crie um estudante)
.setPositiveButton(Adicionar,
[Link]() {
public voidonClick(DialogInterface diálogo,intid) {
Aluno aluno=novoEstudante();
String studentName =[Link]().toString();
String studentGroup =
[Link]().toString();
[Link](nomeDoEstudante);
[Link](grupoEstudante);
intcreatedStudent= novo
StudentHandler(context).addStudent(student);
}).mostrar();
27
28
Agora, abra o aplicativo e tente criar novos alunos. A lista dos
estudantes devem aparecer como na imagem abaixo:
29
Defina OnLongClickListener para cada um dos registros a serem exibidos. Acesse seu
mé[Link]è readRecords (), na loop 'for', coloque o código seguinte abaixo
[Link] ([Link] (id));
Pour tester le code ci-dessus, lancez l'application et appuyez longuement sur un étudiant
TextView. O diálogo abaixo deve aparecer:
30
Na método onClick() do AlertDialog, na método onLongClick(view) da classe
OnLongClickListenerStudentRecord, insira o seguinte código. "Modificar" tem um índice de 0.
@Override
public booleanonLongClick(finalVisualizar visualização) {
contexto= [Link]();
id = [Link]().toString();
[Link](contexto).setTitle(Dossiê Estudante)
.setItens(itens,[Link]() {
public voidonClick(DialogInterface dialog,intitem) {
se(item ==0) {
editarRegistro([Link](id),vista);
}
[Link]();
}
}).mostrar();
retornar falso;
}
31
pública voideditarRegistro(int finalstudentId,finalVer visualização) {
LayoutInflater inflater = (LayoutInflater)
[Link]([Link]ÇO_DE_INFLAÇÃO_DE_LAYOUT);
finalView formElementsView = [Link]([Link].student_input_form, null,
falso);
[Link]([Link]());
[Link]([Link]());
new [Link](contexto)
.setView(viewElementosFormulario)
.setTitle(Atualizar as informações)
.setPositiveButton(Salvar,
[Link]() {
public voidaoClicar(DialogInterface dialog,intid) {
Student objectStudent = novoEstudante();
[Link](studentId);
[Link]([Link]().toString());
[Link]([Link]().toString());
intupdatedStudent=novo
ManipuladorEstudante(contexto).atualizarEstudante(objectStudent);
}).mostrar();
Finalmente, adicione os métodos countRecordset e readRecords (os mesmos que foram criados na
classeOnClickListenerCriarEstudante) para a classeOnLongClickListenerRegistroEstudante e chame-
use o método editRecord para atualizar a interface gráfica após uma operação
de atualização.
32
pública vaziacountRecords(Context context,View view) {
intstudentCount = novoStudentHandler(context).contar();
TextView textViewRecordCount = (TextView)
[Link]().findViewById([Link]);
[Link](studentCount + registros encontrados.);
}
se([Link]() > 0) {
intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();
else {
33
34
Agora, teste seu aplicativo e certifique-se de que a operação de atualização funciona
corretamente.
35
Excluir um registro no Android SQLite
Acesse seu método [Link]è onLongClick ()è dentro
la méthode AlertDialog onClick (). Coloque o seguinte código após a primeira instrução if:
@Override
public booleanonLongClick(finalVisualizar visualização) {
contexto= [Link]();
identificação= [Link]().toString();
[Link](contexto).setTitle(Dossiê Estudante)
.setItems(itens, [Link]() {
public voidonClick(DialogInterface diálogo,intitem) {
se(item == 0) {
editarRegistro([Link](id),vista);
}senão se(item ==1) {
Estudante estudante =novoEstudante();
[Link]([Link](id));
novoStudentHandler(contexto).deleteStudent(estudante);
[Link](contexto, "Enregistrement supprimé avec succès",
[Link]ÇÃO_CURTA).show();
contarRegistros(context, visualizar);
lerRegistros(contexto,visualizar);
}
[Link]();
}
}).mostrar();
retornar falso;
}
36
Inicie o aplicativo e execute a operação de exclusão.
37