0% acharam este documento útil (0 voto)
5 visualizações37 páginas

Tutorial SQLite para Android: CRUD e MVC

Este tutorial ensina como usar o banco de dados SQLite em aplicativos Android, abordando operações básicas de CRUD (Criar, Ler, Atualizar e Excluir) através de um exemplo prático. O documento também explica a estruturação do projeto usando o padrão MVC e a criação de uma interface gráfica para interação do usuário. Além disso, inclui instruções sobre como implementar funcionalidades como AlertDialog e LayoutInflater.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações37 páginas

Tutorial SQLite para Android: CRUD e MVC

Este tutorial ensina como usar o banco de dados SQLite em aplicativos Android, abordando operações básicas de CRUD (Criar, Ler, Atualizar e Excluir) através de um exemplo prático. O documento também explica a estruturação do projeto usando o padrão MVC e a criação de uma interface gráfica para interação do usuário. Além disso, inclui instruções sobre como implementar funcionalidades como AlertDialog e LayoutInflater.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Tutorial de banco de dados SQLite em

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

Nota: Este projeto foi preparado antes da migração para o AndroidX.

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.

Neste exemplo, vamos usar as seguintes operações do SQLite:

Criar - Criar uma nova base de dados


Atualizar - Atualizar a base de dados já criada
Insira uma nova entrada no banco de dados
Recuperar uma ou várias entradas do banco de dados
Atualizar as entradas do banco de dados
Excluir - Remover entradas do banco de dados

Criar um novo projeto

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

Sob o pacote 'Managers', crie uma nova classe StudentHandler.

Estender a classe SQLiteHelper e criar o construtor

Para inserir os dados na tabela do banco de dados, precisamos de acesso em


escrita em nosso banco de dados. Na classe "StudentHandler" recém-criada, nós
devemos criar uma nova instância da nossa classe SQLiteHelper para obter a instância de
base de dados.

Em seguida, devemos criar um método que realizará a operação de inserção. Então,


comece obtendo acesso de escrita ao nosso banco de dados usando:

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.

public intadicionarEstudante (Estudante estudante) {


SQLiteDatabase db = [Link]();
ContentValues values = novoContentValues();
[Link](ajudanteBd.KEY_NAME, [Link]());
[Link](ajudanteDb.KEY_GROUP, [Link]());
longoinsertId = [Link](ajudanteDb.TABLE_STUDENTS, null, valores);
[Link]();
retornar(int)insertId;
}

Recuperar informações do banco de dados


Podemos recuperar todas as informações armazenadas em nossa tabela ou recuperar um
conjunto de informações com base em um critério de seleção.
Para recuperar um conjunto de dados da tabela, precisamos de acesso legível
"legível" da nossa instância de banco de dados.

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
}

Para recuperar as informações completas presentes na tabela do banco de dados, nós


temos necessidade de acesso de escrita à nossa instância de banco de dados. Isso parece mais com
uma consulta SQL onde selecionamos todos os dados da tabela. Para realizar isso
opération, nous allons utiliser la méthoderawQuery()d'instance de base de données. Il
renverra um objeto Cursor que usaremos para extrair todo o conjunto de resultados. Aqui está
l'exemple de code permettant de récupérer les données:

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:

• Nome do banco de dados


• Clause de selection (“Where”)
• Argumento de seleção

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.

Criar a interface gráfica


Coloque um botão "Criar um estudante"

• Placez un bouton "Créer un étudiant" sur votreres/layout /activity_main.xml


• Remover o TextView 'Hello World!'
• définir l'attribut de texte du bouton sur «Créer un étudiant»
• Definir o valor do id do botão como "@+id/buttonCreateStudent"

O código deve se parecer com isto:

12
Vamos definir o OnClickListener do botão "Criar um estudante".

Pode-se identificar o botão pelo seu identificador "buttonCreateStudent"

Le code suivant sera placé dans la méthodeonCreate(),soussetContentView


([Link].activity_main); código do seu arquivo [Link].

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

Coloque o seguinte código em student_input_form.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”.

Context contexto = [Link]().getContext();

LayoutInflater inflater = (LayoutInflater)


[Link]([Link]ÇO_DE_INFLADORES_DE_LAYOUT);
finalView formElementsView = [Link]([Link].student_input_form, nulo,
falso);

finalEditText editTextNomeEstudante = (EditText)


[Link]([Link]);
finalEditText editTextGrupoEstudante = (EditText)
[Link]([Link]);

[Link](context)
.setView(formElementsView)
.setTitle(Crie um estudante)
.setPositiveButton(Adicionar,
[Link]() {
public voidonClick(DialogInterface dialog,intid) {

[Link]();
}

}).mostrar();

15
Nota:

A classe LayoutInflater é utilizada para instanciar o arquivo XML de layout em objetos.


Ver correspondentes.

Em outras palavras, ele aceita um arquivo XML como entrada e constrói os objetosView a partir de
este

Nunca é usado diretamente - use getLayoutInflater() ou getSystemService(String)


para recuperar uma instância LayoutInflater padrão que já está conectada ao contexto atual
e corretamente configurada para o dispositivo no qual você está executando.

[Link]() fornece um meio de converter um arquivo res/layout/*.xml definindo


uma visão em um objetoViewreal utilizável no código-fonte do seu aplicativo.

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](context,O estudante foi bem registrado.,


Torrada.DURACAO_CURTA).mostrar();

[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().

Também queremos mostrar o número de estudantes na base de dados depois de


registre um novo estudante. Abra a classe OnClickListenerCreateStudent e adicione a
métode contarRegistros após criar um novo aluno para atualizar o valor do TextView.

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);

[Link](context,O estudante foi bem registrado.,


[Link]ÇÃO_CURTA).show();
contarRegistros(contexto,visualização);
[Link]();
}

}).mostrar();

public voidcontarRegistros(Context contexto, View visualizacao) {


intstudentCount = novoStudentHandler(context).contar();
TextView textViewContagemRegistro = (TextView)
[Link]().findViewById([Link]);
[Link](studentCount + registros encontrados.);
}

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() {

LinearLayout linearLayoutRecords = (LinearLayout)


findViewById([Link]);
[Link]();

Lista<Aluno> alunos = novoManipuladorDeEstudantes(isso).obterTodosOsEstudantes();

se([Link]() >0) {

para(Student obj : alunos) {

intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();

String textViewContents = [Link](id) +"-" + studentName + " - " +


grupodealunos
TextView textViewStudentItem= novoTextView(isto);
[Link](0,10,0,10);
[Link](textViewContents);
[Link]([Link](id));
[Link](textViewStudentItem);
}

senão{

TextView localizacaoItem =novoTextView(isso);


[Link](8,8,8,8);
[Link]("Aucun enregistrement pour le moment.");
[Link](locationItem);
}

chame o método readRecords() dentro de create().

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.

OuvrezOnClickListenerCreateStudentet ajoutez la méthodereadRecordscomme ci-dessous:

25
public voidlerRegistros(Context contexto, View visualizacao) {

LinearLayout linearLayoutRecords = (LinearLayout)


[Link]().findViewById([Link]);
[Link]();

List<Student> students = novoStudentHandler(context).getAllStudents();

se([Link]() > 0) {

para(Student obj : students) {

intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();

String textViewContents = [Link](id) +"-" + studentName + " - " +


grupo de estudantes
TextView textViewStudentItem= novoTextView(context);
[Link](0,10,0,10);
[Link](textViewContents);
[Link]([Link](id));
[Link](textViewStudentItem);
}

senão{

TextView locationItem = novoTextView(context);


[Link](8,8,8,8);
[Link](Nenhum registro por enquanto.);
[Link](locationItem);
}

Chame a função readRecords (contexto, visualização) no método onClick.

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);

[Link](context,O estudante foi bem registrado.,


Torrada.LENGTH_SHORT).show();
contarRegistros(contexto,visão);
lerRegistros(contexto,visão);
[Link]();
}

}).mostrar();

27
28
Agora, abra o aplicativo e tente criar novos alunos. A lista dos
estudantes devem aparecer como na imagem abaixo:

Atualização de um registro no banco de dados SQLite


Crie uma nova classe [Link] no pacote View. Nós
usaremos um clique longo para dar ao usuário uma opção de atualização.

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));

Faites la même chose dans la classeOnClickListenerCreateStudent.

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

finalCharSequence[] itens = {Modificador, Excluir};

[Link](contexto).setTitle(Dossiê Estudante)
.setItens(itens,[Link]() {
public voidonClick(DialogInterface dialog,intitem) {
se(item ==0) {
editarRegistro([Link](id),vista);
}
[Link]();
}
}).mostrar();

retornar falso;
}

Queremos criar o método editRecord no qual permitimos ao usuário de


modificar as informações de um estudante e realizar uma operação de atualização.

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);

Aluno aluno = novoStudentHandler(contexto).getStudent(studentId);

finalEditText editTextNomeEstudante = (EditText)


[Link]([Link]);
finalEditText editTextGrupoEstudante = (EditText)
[Link]([Link]);

[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);

[Link](contexto, O dossiê do aluno foi colocado à


[Link]ÇÃO_CURTA).show();
contarRegistros(contexto,visualizar);
lerRegistros(contexto,visualizar);
[Link]();
}

}).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.);
}

público vazioreadRecords(Context context,View view) {

LinearLayout linearLayoutRecords = (LinearLayout)


[Link]().findViewById([Link]);
[Link]();

List<Student> alunos = novoStudentHandler(context).getAllStudents();

se([Link]() > 0) {

para(Student obj : estudantes) {

intid = [Link]();
String studentName = [Link]();
String studentgroup = [Link]();

String textViewContents = [Link](id) +"-" + studentName + " - " +


studentgroup;
TextView textViewStudentItem= novoTextView(context);
[Link](0,10,0,10);
[Link](textViewContents);
[Link]([Link](id));
[Link](novo
OnLongClickListenerRegistroEstudante());
[Link](textViewStudentItem);
}

else {

TextView localizacaoItem = novoTextView(context);


[Link](8,8,8,8);
[Link](Nenhum registro no momento.);
[Link](locationItem);
}

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

finalCharSequence[] itens = {Modificador, Excluir};

[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

Você também pode gostar