Great what you can also do, if any, is to create a class with static information about the alter table that will update its base with version control:
below is the upgrade method:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String vers[] = null;
/* AQUI É ONDE OCORRE A MÁGICA PARA ATUALIZAÇÃO DO BANCO, AO ESCREVER O CÓDIGO
* DO BANCO VI QUE AO ATUALIZAR A VERSÃO DO BANCO, DE ACRODO COM
* TODOS AS ORIENTAÇÕES, FAZ O DROP DA TABELA ATUALIZADA E DEPOIS RECRIAVA ELA,
* FIZ A ALTERAÇÃO PARA QUE AO MODIFICAR A VERSÃO DO BANCO,
* O DESENVOLVEDOR POSSA PASSAR OS DADOS CONTIDOS NA CLASSE ATUALIZACOESBANCO E
* COM ESSES DADOS POSSA REALIZAR A ATUALIZAÇÃO */
try {
/* ELE PEGA A ÚLTIMA VERSÃO DO BANCO E COMPARA COM A NOVA, DE ACORDO COM A
* COMPARAÇÃO ELE VAI NA CLASSE ATUALIZACOESBANCO E COLETA OS SCRIPTS
* DAS VERSÕES QUE ESTÃO PENDENTES E EXECUTA UM A UM */
for (int i = oldVersion + 1; i <= newVersion; i++) {
vers = new AtualizacoesBanco().selectScript(i);
/*você pode utilizar qualquer table defitions para realizar
esse procedimento*/
updateTabelasBanco(db, vers[0], vers[1],
vers[2], vers[3]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Below is the version control class model:
public class AtualizacoesBanco {
// o modelo de atualização que é para ser passado no metodo onUpdate do tabledefinition
// das tabelas na classe SthBancoOpenHelper é esse abaixo
// TABELA , CAMPO , TIPO , VALOR DEFAULT
public static String VER_1[] = {"CONFIGURACAO", "NAO_VENDER_TITULO_ATRAZO", "TEXT", "S"};
/*AO CRIAR O CAMPO COM A VERSÃO ACIMA, VOCÊ DEVERÁ INFORMAR LOGO ABAIXO NO MÉTODO
SELECTSTRING O CASE DA VERSÃO, NO CASO DO MÉTODO ELE SEMPRE IRÁ RETORNAR INICIANDO DA
VERSÃO 1 POR CONTA DE QUE A PRIMEIRA VERSÃO PUBLICA COM AS ALTERAÇÕES
*/
public static String[] selectScript(int ver){
switch (ver) {
case 1:
return VER_1;
default:
return null;
}
}
}
The following method can be inserted into the openHelp class you created:
//com esse método você vai pode alterar a estrutura das tabelas de seu banco
public static void updateTabelasBanco(SQLiteDatabase db, String table,
String column, String typ, String valor) {
try {
db.execSQL("ALTER TABLE " + table + " ADD " + column + " " + typ);
if (valor != ""){
db.execSQL("update "+ table +" set "+ column +" = '"+ valor +"'");
}
} catch (Exception e) {
e.printStackTrace();
}
}
With this you have a version control of your bank, if you are building a system where version control should be very strict, this is a great way to keep the bank under control;