O banco de dados parece não está atualizando para versões mais nova, coloquei os Logs para identificar qual SQL tava criando, e só a primeira tabela do onCreate está sendo criada, as outras do onUpgrade não estão sendo atualizadas, e nada aparece no logcat, somente a primeira tabela.
public class AlunoDAO extends SQLiteOpenHelper {
public AlunoDAO(Context context) {
super(context, "Agenda", null, 4);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, " +
"nome TEXT NOT NULL, " +
"endereco TEXT, " +
"telefone TEXT, " +
"site TEXT, " +
"nota REAL, " +
"caminhoFoto TEXT);";
try{
db.execSQL(sql);
Log.i("DBInfo", "Primeira tabela criada com sucesso");
}catch (Exception e){
Log.i("DBInfo", "erro ao criar primeira tabela");
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "";
switch (oldVersion) {
case 1:
String sql2 = "ALTER TABLE Alunos ADD COLUMN caminhoFoto TEXT";
try{
db.execSQL(sql2);// indo para versao 2
Log.i("DBInfo", "Primeira alteracao com sucesso");
}catch (Exception e){
Log.i("DBInfo", "erro na primeira alteracao");
}
case 2:
String criandoTabelaNova = "CREATE TABLE Alunos_novo " +
"(id CHAR(36) PRIMARY KEY, " +
"nome TEXT NOT NULL, " +
"endereco TEXT, " +
"telefone TEXT, " +
"site TEXT, " +
"nota REAL, " +
"caminhoFoto TEXT);";
try{
db.execSQL(criandoTabelaNova); // indo para versao 3
Log.i("DBInfo1", "Nova Tabela Criada com Sucesso");
}catch (Exception e){
Log.i("DBInfo1", "Erro ao criar nova Tabela");
}
//*****transferindo alunos da tabela antiga para tabela nova*****
String inserindoAlunosNaTabelaNova = "INSERT INTO Alunos_novo" +
"(id, nome, endereco, telefone, site, nota, caminhoFoto)" +
"SELECT id, nome, endereco, telefone, site, nota, caminhoFoto " +
"FROM Alunos" ;
try{
db.execSQL(inserindoAlunosNaTabelaNova);
Log.i("DBInfo2", "Inserido na nova tabela com sucesoo");
}catch (Exception e){
Log.i("DBInfo2", "Erro na transferencia de tabela");
}
//*****Removendo tabela antiga*****
String removendoTabelaAntiga = "DROP TABLE Alunos";
try {
db.execSQL(removendoTabelaAntiga);
Log.i("DBInfo3", "Sucesso ao Excluir tabela antiga");
}catch (Exception e){
Log.i("DBInfo3", "Erro ao remover tabela antiga");
}
////*****Alterando nome da Tabela nova*****
String alterandoNomeDaTabelaNova = "ALTER TABLE Alunos_novo " +
"RENAME TO Alunos";
try {
db.execSQL(alterandoNomeDaTabelaNova);
Log.i("DBInfo4", "Sucesso ao alterar nome da tabela nova");
}catch (Exception e){
Log.i("DBInfo4", "Erro ao alterar o nome da tabela nova");
}
case 3:
String buscaAlunos = "SELECT * FROM Alunos";
Cursor cursor = db.rawQuery(buscaAlunos, null);
List<Aluno> alunos = populaAlunos(cursor);
String atualizaIdDoaluno = "UPDATE Alunos SET id=? WHERE id=?";
for (Aluno aluno: alunos){
db.execSQL(atualizaIdDoaluno, new String[] {geraUUID(), aluno.getId()});
}
}
}