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 № 1vazio 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.