Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao excluir contato

Ao tentar excluir, notei que não está sendo gerado o id do Cliente, como faço para definir o AUTOINCRENT?

String ddl = "CREATE TABLE Clientes (id PRIMARY KEY, nome TEXT NOT NULL)";

Método salva

public void salva(Cliente cliente) {

ContentValues values = new ContentValues(); values.put("nome", cliente.getNome()); getWritableDatabase().insert("Clientes", null, values);

Método exclui

public void exclui(Cliente cliente){ String[] args = {cliente.getId().toString()}; getWritableDatabase().delete("Clientes", "id=?", args ); }

1 resposta
solução!

Então, Leandro. Tive o mesmo o problema. O negócio é que no SQLite eles recomendam não usar o AUTOINCREMENT, e ao invés disso, declarar um campo id como "id INTEGER PRIMARY KEY". O que faltou na sua DDL foi só o INTEGER. O SQLite vai fazer um gerenciamento de ID pelo ROWID, que é reutilizado quando um outro registro é deletado. Caso não queira esse comportamento é só mudar a DDL pra "id INTEGER PRIMARY KEY AUTOINCREMENT" que funciona do jeito padrão.

Só pra avisar, lembra que como você tá mudando a DDL, você tem que mudar a versão do banco no construtor, e que no onUpgrade tenha a chamada para o onCreate logo após de dropar a tabela.

Avisa aí se deu tudo certo :)

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