/ / SQLite - Java - onCreate e onUpgrade - Android - java, android, sqlite

SQLite - Java - onCreate e onUpgrade - Android - java, android, sqlite

Olá, eu criei meu primeiro aplicativo que coleta algumas informações básicas em seu banco de dados privado local usando minha própria classe que herda o SQLiteOpenHelper

Percebi que, ao herdar, tenho que implementar alguns dos métodos que são:

  @Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

o que notei é: em muitos tutoriais, vi pessoas usando algo parecido com isto:

 @Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (parameters  here...)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS table_name");
onCreate(db);
}

Questão

Eu pensei que o código na abordagem acima faz isso: sempre que o usuário reiniciar o aplicativo, ele deveráexcluir a tabela inteira e recriá-la, mas não, então qual é o objetivo? Acabei de testá-lo no meu telefone e, basicamente, fecho o aplicativo e encerro o processo, em seguida, reabra-o e a tabela ainda está lá com o conteúdo anterior, não é meu objetivo, com certeza quero manter o banco de dados entre todos as sessões, mas eu simplesmente não recebo este código de exemplo ...

em que ordem existem métodos chamados?

Eu pensei que o primeiro é o construtor e, em seguida, onCreate e onUpgrade, mas ele não exclui a tabela, o que significa que onUpgrade não está sendo chamado?

Respostas:

1 para resposta № 1

vazio público onUpgrade() NÃO é o mesmo que onResume(). onUpgrade() será chamado apenas no caso em que o usuário atualize seu aplicativo com uma versão mais recente. Reiniciar -> chama onCreate() ou onResume().

Por exemplo:

Quando você criou o aplicativo pela primeira vez, você tem a tabela EMPLOYEE com FIRSTNAME e LASTNAME

Mas na versão 2 do seu aplicativo (que seria publicada posteriormente), você adiciona a nova coluna MIDDLENAME a esta tabela e, em seguida, onUpgrade() chamada será usada (para o usuário que estiver atualizando para a nova versão).

Baseado em Documentação SQLiteOpenHelper:

Chamado quando o banco de dados precisa ser atualizado. A implementação deve usar esse método para descartar tabelas, adicionar tabelas ou fazer qualquer outra coisa ele precisa atualizar para a nova versão do esquema.


1 para resposta № 2

onCreate() é chamado quando o banco de dados deve ser criado.

onUpgrade() é chamado quando você aumenta o número da versão do banco de dados. Nesse caso, você excluirá tudo da tabela e começará novamente.

Você precisará eliminar as tabelas manualmente toda vez que o aplicativo reiniciar, se desejar limpar o banco de dados dessa maneira. onCreate() novamente para reconstruí-lo.