package br.com.cursoandroid.cadastroaluno.modelo.dao; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import br.com.cursoandroid.cadastroaluno.modelo.bean.Aluno; /** * Classe para persistĂȘncia de Dados do Aluno * * @author marciopalheta */ public class AlunoDAO extends SQLiteOpenHelper { // Constantes para auxilio no controle de versoes private static final int VERSAO = 1; private static final String TABELA = "Aluno"; private static final String DATABASE = "MPAlunos"; // Constante para log no Logcat private static final String TAG = "CADASTRO_ALUNO"; public AlunoDAO(Context context) { // Chamada o construtor que sabe acessar o BD super(context, DATABASE, null, VERSAO); } /** * Metodo responsavel pela criacao da estrutura do BD * */ public void onCreate(SQLiteDatabase database) { // Definicao do comando DDL a ser executado String ddl = "CREATE TABLE " + TABELA + "( " + "id INTEGER PRIMARY KEY, " + "nome TEXT, telefone TEXT, endereco TEXT, " + "site TEXT, email TEXT, foto TEXT, " + "nota REAL)"; // Execucao do comando no SQLite database.execSQL(ddl); Log.i(TAG, "Tabela criada: " + TABELA); } /** * Metodo responsavel pela atualizacao das estrutura das tableas * */ public void onUpgrade(SQLiteDatabase database, int versaoAntiga, int versaoNova) { // Definicao do comando para destruir a tabela Aluno String sql = "DROP TABLE IF EXISTS " + TABELA; // Execucao do comando de destruicao database.execSQL(sql); Log.i(TAG, "Tabela excluida: " + TABELA); // Chamada ao metodo de contrucao da base de dados onCreate(database); } @Override public void onDowngrade(SQLiteDatabase database, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS " + TABELA; database.execSQL(sql); onCreate(database); } public void cadastrar(Aluno aluno) { // Objeto para armazenar os valores dos campos ContentValues values = new ContentValues(); // Definicao de valores dos campos da tabela values.put("nome", aluno.getNome()); values.put("telefone", aluno.getTelefone()); values.put("endereco", aluno.getEndereco()); values.put("site", aluno.getSite()); values.put("email", aluno.getEmail()); values.put("foto", aluno.getFoto()); values.put("nota", aluno.getNota()); // Inserir dados do Aluno no BD getWritableDatabase().insert(TABELA, null, values); Log.i(TAG, "Aluno cadastrado: " + aluno.getNome()); } public void alterar(Aluno aluno) { ContentValues values = new ContentValues(); values.put("nome", aluno.getNome()); values.put("telefone", aluno.getTelefone()); values.put("endereco", aluno.getEndereco()); values.put("site", aluno.getSite()); values.put("email", aluno.getEmail()); values.put("foto", aluno.getFoto()); values.put("nota", aluno.getNota()); // Colecao de valores de parametros do SQL String[] args = { aluno.getId().toString() }; // Altera dados do Aluno no BD getWritableDatabase().update(TABELA, values, "id=?", args); Log.i(TAG, "Aluno alterado: " + aluno.getNome()); } public List<Aluno> listar() { // Definicao da colecao de alunos List<Aluno> lista = new ArrayList<Aluno>(); // Definicao da instrucao SQL String sql = "Select * from Aluno order by nome"; // Objeto que recebe os registros do banco de dados Cursor cursor = getReadableDatabase().rawQuery(sql, null); try { while (cursor.moveToNext()) { // Criacao de nova referencia para Aluno Aluno aluno = new Aluno(); // Carregar os atributos de Aluno com dados do BD aluno.setId(cursor.getLong(0)); aluno.setNome(cursor.getString(1)); aluno.setTelefone(cursor.getString(2)); aluno.setEndereco(cursor.getString(3)); aluno.setSite(cursor.getString(4)); aluno.setEmail(cursor.getString(5)); aluno.setFoto(cursor.getString(6)); aluno.setNota(cursor.getDouble(7)); // Adicionar novo Aluno aa lista lista.add(aluno); } } catch (SQLException e) { Log.e(TAG, e.getMessage()); } finally { cursor.close(); } return lista; } /** * Metodo responsavel pela exclusao de um Aluno do BD * * @param aluno * a ser excluido */ public void deletar(Aluno aluno) { // Definicao de array de parametros String[] args = { aluno.getId().toString() }; // Exclusao do Aluno getWritableDatabase().delete(TABELA, "id=?", args); Log.i(TAG, "Aluno deletado: " + aluno.getNome()); } /** * Metodo que verifica se um numero de telefone pertence a um aluno * @param telefone * @return true, se o telefone pertence a um aluno */ public boolean isAluno(String telefone) { String sql = "select * from " + TABELA + " where telefone = ?"; String[] valores = { telefone }; Cursor cursor = null; try { //Abertura da conexao com BD e execucao da consulta cursor = getReadableDatabase().rawQuery(sql, valores); //Retorna true, se for devolvida alguma linha return cursor.getCount() > 0; } catch (SQLException e) { Log.e(TAG, e.getMessage()); return false; } finally { cursor.close(); } } }