Realizando operações de CRUD no Android com Java

Veja neste artigo como desenvolver uma classe para realizar as operações básicas CRUD (inserção, leitura, alteração e exclusão) no banco de dados SQLite.

Neste artigo será apresentada uma forma simples de realizar as operações de CRUD no sistema operacional móvel Android utilizando a linguagem Java, facilitando a manipulação de dados no banco de dados SQLite.

CRUD

CRUD (Create, Read, Update e Delete em Inglês) é uma sigla utilizada para se referir às quatro operações básicas realizadas em banco de dados relacionais que são consulta, inclusão, alteração e exclusão dos registros.

Criação do CRUD

Para facilitar as operações no banco de dados vamos criar uma classe chamada AcessoBD, essa classe terá os métodos Insert, Update, Delete e Select. Veja abaixo a declaração dos quatro métodos.

Insert

Este método será responsável pela inclusão dos registros no banco e terá como parâmetro o nome da tabela em que os registros serão incluídos e os valores que serão inseridos na base de dados.

public long Insert(String tabela, ContentValues values) { long linhasInseridas = 0; this.Open(); try { Log.i(CNT_LOG, "Inserindo registro"); linhasInseridas = db.insert(tabela, null, values); Log.i(CNT_LOG, "Linhas inseridas: " + String.valueOf(linhasInseridas)); } finally { this.Close(); } return linhasInseridas; }
Listagem 1. Declaração do método Insert

Update

Este método será responsável pela alteração dos registros no banco de dados e terá como parâmetro o nome da tabela onde os registros serão alterados, os valores que serão alterados, o filtro (Where) dos registros e os argumentos.

public long Update(String tabela, ContentValues values, String where, String[] whereArgs) { long linhasAlteradas = 0; this.Open(); try { Log.i(CNT_LOG, "Alterando registro(s)"); linhasAlteradas = db.update(tabela, values, where, whereArgs); } finally { this.Close(); Log.i(CNT_LOG, "Linha(s) alterada(s): " + String.valueOf(linhasAlteradas)); } return linhasAlteradas; }
Listagem 2. Declaração do método Update

Delete

Este método é responsável pela exclusão dos registros do banco de dados e terá como parâmetro o nome da tabela de onde os registros serão excluídos, o filtro (Where) dos registros e os argumentos.

public int Delete(String tabela, String where, String[] whereArgs) { int linhasExcluidas = 0; this.Open(); try { Log.i(CNT_LOG, "Iniciando exclusão"); this.Open(); linhasExcluidas = db.delete(tabela, where, whereArgs); Log.i(CNT_LOG, "Registro excluído(s): " + String.valueOf(linhasExcluidas)); } finally { this.Close(); } return linhasExcluidas;
Listagem 3. Declaração do método Delete

Select

O método select é responsável pela consulta dos registros no banco de dados e terá como parâmetro o nome da tabela onde os registros serão buscados, as colunas que serão buscadas, o filtro (Where) dos registros, os argumentos, a ordenação o agregamento e o agrupamento.

public Cursor Select(String tabela, String campos[], String where, String[] whereArgs, String groupBy, String having, String orderBy) { Cursor c = null; this.Open(); try { Log.i(CNT_LOG, "Iniciando Busca"); this.Open(); c = db.query(tabela, campos, where, whereArgs, groupBy, having, orderBy); Log.i(CNT_LOG, "Busca realizada. Total de registros: " + c.getCount()); } finally { this.Close(); } return c; }
Listagem 4. Declaração do método Select

Veja abaixo como ficou a declaração da classe.

package com.tarefas; import java.util.ArrayList; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * Esta classe é responsavel pelas operações CRUD na base de dados * @author Fellipe * */ public class AcessoBD extends SQLiteOpenHelper { private final String CNT_LOG = "AcessoBD"; private ArrayList<String> createTable; private SQLiteDatabase db; public AcessoBD(Context context, String nomeBanco, ArrayList<String> sqlCriacaoBanco) { super(context, nomeBanco, null, 1); createTable = sqlCriacaoBanco; } private AcessoBD Open() { db = this.getWritableDatabase(); return this; } private void Close() { if (db.isOpen()) { db.close(); } } @Override public void onCreate(SQLiteDatabase db) { Log.i(CNT_LOG, "Iniciando a criação das tabelas"); try { db.beginTransaction(); for (int i = 0; i < createTable.size(); i++) { db.execSQL(createTable.get(i)); } db.setTransactionSuccessful(); } finally { db.endTransaction(); } Log.i(CNT_LOG, "Tabelas criadas"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public long Insert(String tabela, ContentValues values) { long linhasInseridas = 0; this.Open(); try { Log.i(CNT_LOG, "Inserindo registro"); linhasInseridas = db.insert(tabela, null, values); Log.i(CNT_LOG, "Linhas inseridas: " + String.valueOf(linhasInseridas)); } finally { this.Close(); } return linhasInseridas; } public long Update(String tabela, ContentValues values, String where, String[] whereArgs) { long linhasAlteradas = 0; this.Open(); try { Log.i(CNT_LOG, "Alterando registro(s)"); linhasAlteradas = db.update(tabela, values, where, whereArgs); } finally { this.Close(); Log.i(CNT_LOG, "Linha(s) alterada(s): " + String.valueOf(linhasAlteradas)); } return linhasAlteradas; } public int Delete(String tabela, String where, String[] whereArgs) { int linhasExcluidas = 0; this.Open(); try { Log.i(CNT_LOG, "Iniciando exclusão"); this.Open(); linhasExcluidas = db.delete(tabela, where, whereArgs); Log.i(CNT_LOG, "Registro excluído(s): " + String.valueOf(linhasExcluidas)); } finally { this.Close(); } return linhasExcluidas; } public Cursor Select(String tabela, String campos[], String where, String[] whereArgs, String groupBy, String having, String orderBy) { Cursor c = null; this.Open(); try { Log.i(CNT_LOG, "Iniciando Busca"); this.Open(); c = db.query(tabela, campos, where, whereArgs, groupBy, having, orderBy); Log.i(CNT_LOG, "Busca realizada. Total de registros: " + c.getCount()); } finally { this.Close(); } return c; } }
Listagem 5. Declaração da classe de acesso ao banco de dados

Utilizando a classe

Utilizar a classe é bastante simples, vamos tomar como exemplo uma tabela chamada Tarefas com os campos _id (padrão do android), Titulo, Descricao e Data. Veja abaixo como efetuar as 4 operações no banco de dados.

Calendar calendar = Calendar.getInstance(); ContentValues values = new ContentValues(); values.put("Titulo", txtTitulo.getText().toString()); values.put("Descricao", txtDescricao.getText().toString()); values.put("data", dateFormat.format(calendar.getTime())); Aplicacao.getBD().Insert("Tarefas", values);
Listagem 6. Utilizando o método Insert
Calendar calendar = Calendar.getInstance(); ContentValues values = new ContentValues(); values.put("Titulo", txtTitulo.getText().toString()); values.put("Descricao", txtDescricao.getText().toString()); values.put("data", dateFormat.format(calendar.getTime())); Aplicacao.getBD().Update("Tarefas", values, "_id=?", new String[] {String.valueOf(this.id)});
Listagem 7. Utilizando o método Update
Aplicacao.getBD().Delete("Tarefas", "_id=?", new String[] {String.valueOf(info.id)});
Listagem 8. Utilizando o método Delete
Cursor cursor = Aplicacao.getBD().Select("Tarefas", new String[] {"_id, Titulo, Descricao, Data"}, null, null, null, null, null);
Listagem 9. Utilizando o método Select

Conclusão

Neste artigo procurou-se demonstrar uma maneira simples de realizar as 4 operações básicas no banco de dados SQLite em um aplicativo para Android utilizando a linguagem Java.

Artigos relacionados