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

Dúvida no Ex. 12 da Aula 5 - Persistência com SQLite

Olá a todos, Eu verifiquei na explicação a necessidade da criação de uma classe auxiliar, mas tentando desenrolar antes de ver essa dica, veio a ideia de instanciar a classe SQLiteOpenHelper, pra isso o meu código ficou:

public class AlunoDAO {


    private static final String DATABASE = "cadastroDataBase";
    private static final int VERSION = 1;
    private static final String TABLE = "aluno";



    public SQLiteOpenHelper SQLLite = new SQLiteOpenHelper() {

        public DAO(Context context) {
            super(context, DATABASE, null, VERSION);

        }

        @Override
        public void onCreate(SQLiteDatabase database) {
            String sql = "CREATE TABLE " + TABLE + " (id INTERGER PRIMARY KEY, " +
                    "name TEXT UNIQUE NOT NULL " +
                    "address TEXT " +
                    "phone TEXT " +
                    "email TEXT " +
                    "nota REAL " +
                    "caminhoPhoto TEXT);";

            database.execSQL(sql);
        }

        @Override
        public void onUpgrade(SQLiteDatabase database, int i, int i1) {
            String sql = "DROP TABLE IF EXISTS " + TABLE;

            database.execSQL(sql);
            onCreate(database);
        }
    };

parece que quase tudo está funcional, com a exceção do método DAO que exige um retorno que eu não sei qual seria.

A questão é: Esse instancia funcionaria para o que o desafio pede, e qual seria o retorno pra ela funcionar.

2 respostas
solução!

Olá Bruno!

Para o que o desafio pede, apenas instanciar a classe SQLiteOpenHelper no seu DAO não será suficiente. Todos os seus DAOs precisarão compartilhar uma única instância do helper e não temos certeza de qual DAO será utilizado primeiro no seu código então precisaríamos instanciar o Helper uma única vez no início do aplicativo e passá-lo como referência para os outros DAOs.

Ainda assim, para entender o que está acontecendo no seu código, quando você instancia uma classe anônima a partir da classe abstrata SQLiteOpenHelper, você precisa passar os parâmetros exigidos pelo construtor da classe (contexto, nome do banco, cursor factory e versão). Nessa situação, não podemos criar um novo construtor para a classe anônima, que é o caso do construtor DAO(Context context) no seu código.

Se quiser mais detalhes para resolver o desafio, verifique a dúvida do link abaixo. Lá eu explico de forma detalhada o procedimento mais adequado para solucionar esse problema.

https://www.alura.com.br/course/android-basic-1/discussions/668996

Abraço!

Opa Jeferson,

Depois de ver a explicação eu percebi que tava fazendo besteira. Eu dei uma olhada nas outras discussões e isso acabou ajudando bastante a compreender onde eu tava errando.

Valeu mesmo.