Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Estou com dúvida no curso de Android: Aplicações e armazenamento de dados - Parte 1, no exercício do capítulo Persistência com SQLite.

gostaria de saber como proceder neste exercicio!

5 respostas

Po, cara. Imagino que é só pra criar o modelo da maneira como pedem e inserir o código na box que tem abaixo!

Ih, cara! Esquece.. rs. Achei que sua dúvida era relativa ao exercício 1! =P

Bom Thiago você deve criar uma variável private to tipo SQLiteOpenHelper, e elimar a herança. Tente fazer sozinho para poder fixar melhor o conteúdo, abaixo esta o código de como deve ficar para sanar possíveis duvidas.

package br.com.caelum.cadastro.dao;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import br.com.caelum.cadastro.modelo.Aluno;

public class AlunoDAO {

    private SQLiteOpenHelper db;
    private static final String DATABASE = "FJ57";
    private static final int VERSAO = 1;
    private static final String TABELA = "CadastroCaelum";
    private static final String SQL = "CREATE TABLE " + TABELA
            + "(id INTEGER PRIMARY KEY," + " nome TEXT UNIQUE NOT NULL,"
            + " telefone TEXT," + " endereco TEXT," + " site TEXT,"
            + " nota REAL," + " foto TEXT" + ");";

    public AlunoDAO(Context context) {
        db = new SQLiteOpenHelper(context, DATABASE, null, VERSAO) {

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion,
                    int newVersion) {
                db.execSQL(SQL);

            }

            @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL("DROP TABLE IF EXISTS " + DATABASE + ";");
                onCreate(db);

            }
        };

    }

    public void inserir(Aluno aluno) {
        ContentValues values = toValues(aluno);

        db.getWritableDatabase().insert(TABELA, null, values);
    }

    private ContentValues toValues(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("nota", aluno.getNota());
        values.put("foto", aluno.getFoto());
        return values;
    }

    public void close() {
        db.close();
    }
}
solução!

Bom pelo que estudei uma das formas de realizar esse exercício da forma solicitada é da seguinte forma:

-Primeiro eu criei um daohelper que estende de SQLiteOpenHelper

tentei fazer com que o daohelper fique o mais genérico possível, para que os próximos dao's não precisem estender do sqliteopenhelper

public class DAOHelper extends SQLiteOpenHelper {

    private static final String DATABASE = "FJ57";
    private static final int VERSAO = 1;
    private static final String TABELA_CADATROCAELUM = "CREATE TABLE CadastroCaelum "
            + " (id INTEGER PRIMARY KEY, "
            + " nome TEXT UNIQUE NOT NULL, telefone TEXT, endereco TEXT, "
            + " site TEXT, nota REAL, foto TEXT);";

    private static String TABELA;

    public DAOHelper(Context context, String tabela) {
        super(context, DATABASE, null, VERSAO);
        TABELA = tabela;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(TABELA_CADATROCAELUM);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String dll = "DROP TABLE IF EXIST " + TABELA;
        db.execSQL(dll);
        this.onCreate(db);
    }

    public void insert(ContentValues values) {
        getWritableDatabase().insert(TABELA, null, values);
    }

    public Cursor listar(String[] colunas) {
        Cursor cursor = getWritableDatabase().query(TABELA, colunas, null,
                null, null, null, null);
        return cursor;
    }

}

Depois fiz as seguintes alterações no alunoDao


public class AlunoDAO extends DAOHelper {
    private static final String TABELA = "CadastroCaelum";

    public AlunoDAO(Context context) {
        super(context, TABELA);
    }

    public void insert(Aluno aluno) {
        insert(toValues(aluno));
    }

    private ContentValues toValues(Aluno aluno) {
        ContentValues values = new ContentValues();

        values.put("nome", aluno.getNome());
        values.put("site", aluno.getSite());
        values.put("endereco", aluno.getEndereco());
        values.put("telefone", aluno.getTelefone());
        values.put("nota", aluno.getNota());
        values.put("foto", aluno.getFoto());
        return values;

    }

}

Dá uma analisada no código e se tiver duvida posta ai.

Oi Thiago! A ideia é exatamente essa que o Ícaro descreveu!