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

Duvidas sobre o SQLiteOpenHelper

Seguindo a aula sobre persistência de dados, o campo id, que é uma primary key da tabela, está retornando null na minha lista, mas estou conseguindo inserir os dados normalmente. Alguém sabe como resolver isso? Segue o código de criação da tabela.

String sql = "CREATE TABLE "+TABELA+ " ("
                + "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                + "nome TEXT UNIQUE NOT NULL, "
                + "endereco TEXT, "
                + "telefone TEXT, "
                + "site TEXT, "
                + "nota REAL, "
                + "caminhoFoto TEXT"
                + ");";
4 respostas

Mesmo tirando o AUTOINCREMENT não esta funcionando.

Boa tarde Bruno. Coloque os métodos de inserção e de consulta para que possamos analisar melhor o problema.

solução!

No seu método lista, quando faz a query e cria os Alunos com base no cursor devolvido, você provavelmente esqueceu de popular o id do seu objeto Aluno.

Long id = cursor.getLong(getColumnIndex("id"));
aluno.setId(id);

Sobre o autoincrement: essa palavra não é necessária. O SQLite já coloca em cada linha das tabelas um número chamado row id, que é autoincrement. Podemos trazer esse número para dentro da nossa tabela ao colocar uma coluna cujo nome é id do tipo INTEGER e PRIMARY KEY.

Para mais detalhes, dê uma olhada na página sobre rowid na documentação do SQLite.

Olá. Realmente esqueci de popular a id. Não fazia sentido o cadastro funcionar sem o id. Agora resolveu. Obrigado a todos pela resposta. Abraço.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software