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

Dúvida no Ex. 3 da Aula 5 - Editando alunos

O que acontece se o aluno não tiver nome? No banco de dados a gente falou que não pode ser NULL, mas isso acontece em tempo de execução e não testamos o nome na aplicação.

5 respostas

Daniel!

Como assim, se o Aluno não tiver nome ? Se o Aluno estiver sem nome no banco no momento da exclusão não vai fazer diferença.

Para excluir, esta sendo excluído pelo id:

public void deleta(Aluno aluno) {
        SQLiteDatabase db = getWritableDatabase();
        String[] params = {aluno.getId().toString()};
        db.delete("Alunos", "id = ?", params);
}

Abraço!

Hmm, pode ser falta de conhecimento meu em SQL, mas na hora de criar o banco fazemos assim:

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, site TEXT, nota REAL);";
        db.execSQL(sql);
    }

Esse TEXT NOT NULL impede que nome seja vazio? O que acontece ao enviar sem nada?

Daniel,

Se enviar sem o campo nome e não tratar no código, vai lançar uma exception e não vai deixar gravar.

Esse é o comportamento esperado.

Esta gravando sem o nome ?

solução!

Se você gravar um Aluno com nome NULL, o SQLiteDatabase vai printar uma exception, mas não vai quebrar a aplicação. É como se o próprio database fizesse um try...catch dessa exception e só imprimisse no console.

Caso queira que a aplicação quebre ou você queira tratar a exception gerada, basta trocar o insert (chamado no método insere) pelo insertOrThrow, que disparará uma exception se algo estiver errado.

Ah entendi, valeu!