Como atualizar um banco de dados SQLite e NÃO perder todos os dados existentes?
Estou adicionando uma tabela ao banco de dados SQLite do meu aplicativo. Toda a minha sintaxe está bem, não o problema. Mas estou com problemas para conseguir que a nova tabela seja criada corretamente. Eu adicionei a nova tabela ....
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(CREATE_REQUESTS);
db.execSQL(CREATE_OVERRIDE);
}
Meu método on create. Eu tenho 3 mesas. Quando atualizei o número da versão, recebi um erro dizendo que "as solicitações de tabela (referentes a CREATE_REQUESTS) já foram criadas". Uma olhada no meu método onUpgrade ...
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS contacts");
onCreate(db);
}
Me levou a entender que a linhadb.execSQL("DROP TABLE IF EXISTS contacts")
, que se refere à minha tabela DATABASE_CREATE no método onCreate, é usada para descartar a tabela antiga e, em seguida, a próxima linha,onCreate(db);
recria. Não adicionei solicitações nessa linha execSQL, e foi isso que causou o erro. Aqui está o problema: prefiro não perder os dados nas duas tabelas que já tenho. Existe uma maneira de adicionar uma tabela como eu estou tentando fazer e não perder todos os dados antigos? Obrigado.