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

Dados apagados após o **addMigrations()**

Olá !

Eu não entendi muito bem o porquê de termos apagado os dados do app após feito a atualização do banco da versão "2" para a "3". Foi mencionado que haveria uma outra abordagem no lugar do método fallbackToDestructiveMigration(), que seria o uso do addMigrations(). Porém, mesmo assim, tivemos de reiniciar as informações já salvas...

Resumindo: No caso d'eu não poder perder os dados já salvos na aplicação, de forma alguma, mas precisar atualizar as tabelas do banco, qual seria a abordagem correta ?

1 resposta
solução!

O motivo dele ter apagado as informações do aplicativo naquela hora foi por causa da exceção NullPointerException que aconteceu porque ele adicionou uma nova coluna na tabela com NULL como valor padrão implicitamente.

As provas que já estavam no banco tinham apenas o nome, mas o App ia tratar elas como se tivessem uma data também, sendo que não tinham. Apagar os dados do aplicativo era mais fácil porque, teoricamente, as provas sem datas eram inúteis pro cliente.

No caso de aplicações em que os dados não podem ser destruídos, você pode tratar no seu próprio código os objetos que você espera que podem ser nulos (por exemplo no conversor, que foi onde o erro aconteceu) com um if(objeto.novaColuna != null), ou melhor ainda, adicionar um valor padrão para a nova coluna coluna através da cláusula DEFAULT do SQL (ALTER TABLE tabela ADD COLUMN coluna INTEGER DEFAULT 0 -- adiciona o número 0 como valor padrão dessa coluna para todos os registros antigos da tabela), coisa que o Alex sempre faz nos vídeos do curso de sincronização com web service (tipo aqui)

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