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

Completando o cadastro - O id do aluno vem vazio

Não consigo deletar o aluno pelo id, conforme o módulo sugere pois, após debugar, verifiquei que o id vem vazio. Isso porque não é populado em tela igualmente os demais campos (nome, telefone etc).

O meu salvar do DAO foi desenvolvido conforme as orientações do curso:

public void salva(Aluno aluno) {    
        getWritableDatabase().insert("Alunos", null, toValues(aluno));
    }

    private ContentValues toValues(Aluno aluno) {

        ContentValues values = new ContentValues();

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

        return values;
    }

É para setar o id do aluno é alguma outra forma? Qual seria a maneira correta de popular o id do aluno para que possamos deletar pelo id e não pelo nome?

2 respostas
solução!

Descobri o que fiz de errado. No método onCreate do DAO coloquei a query da seguinte maneira:

String ddl = "CREATE TABLE Alunos (id PRIMARY KEY, "+
                " nome TEXT UNIQUE NOT NULL, telefone TEXT,"+
                " endereco TEXT, site TEXT, foto TEXT, nota REAL);";

Quando deveria ser:

String ddl = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, "+
                " nome TEXT UNIQUE NOT NULL, telefone TEXT,"+
                " endereco TEXT, site TEXT, foto TEXT, nota REAL);";

Tive o mesmo problema e consegui resolver desta forma. obg.

Obs: na video aula "persistencia com sql lite" o instrutor comete o mesmo erro.