Troquei a versão do banco para 4 no construtor, inseri o case 3, fiz todas as atualizações para migrar e inserir UUID nos alunos, mas a aplicação nem entrava nesse case. Tive que reinstalar a aplicação, e aí fiquei sem saber se a migração funcionou ou não. Segue o código do construtor e do onUpgrade:
public AlunoDAO(Context context) {
super(context, "Agenda", null, 4);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql;
switch (oldVersion) {
case 1:
sql = "ALTER TABLE Alunos ADD COLUMN caminhoFoto TEXT;";
db.execSQL(sql);
case 2:
String criarNovaTabela = "CREATE TABLE Alunos_nova " +
"(id CHAR(36) PRIMARY KEY," +
"nome TEXT NOT NULL, " +
"endereco TEXT, " +
"telefone TEXT, " +
"site TEXT, " +
"nota REAL, " +
"caminhoFoto TEXT);";
db.execSQL(criarNovaTabela);
String inserirAlunosNaNovaTabela = "INSERT INTO Alunos_nova (id, nome, endereco, telefone, site, nota, caminhoFoto) " +
"SELECT id, nome, endereco, telefone, site, nota, caminhoFoto " +
"FROM Alunos";
db.execSQL(inserirAlunosNaNovaTabela);
String removerTabelaAntiga = "DROP TABLE Alunos";
db.execSQL(removerTabelaAntiga);
String alterarNomeDaNovaTabela = "ALTER TABLE Alunos_nova " +
"RENAME TO Alunos";
db.execSQL(alterarNomeDaNovaTabela);
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) {
String novouuid = geraUUID();
Log.i("UUID gerado ", novouuid);
db.rawQuery(atualizaIdDoAluno, new String[]{novouuid, aluno.getId()});
}
}
}
private String geraUUID() {
return UUID.randomUUID().toString();
}