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;
}
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;
}
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;
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;
}
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;
}
}
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);
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)});
Aplicacao.getBD().Delete("Tarefas", "_id=?", new String[] {String.valueOf(info.id)});
Cursor cursor = Aplicacao.getBD().Select("Tarefas", new String[]
{"_id, Titulo, Descricao, Data"}, null, null, null, null, null);
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.