Eu tenho um banco de dados SQLite no meu aplicativo e agora fiz algumas alterações no aplicativo, nos valores etc. e preciso renomear (ou excluir e adicionar novo) a coluna.
Acabei de renomear o nome da coluna, mas agora recebo o
sqlite.sqliteexception no such column error...
Devo usar algum método diferente para alterar a tabela (nomes de colunas) em vez dessa abordagem direta de amador, que obviamente retorna esse erro?
ATUALIZAR
O truque é apenas mudar a versão do banco de dados:
public DatabaseManidzer(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
Log.w(DatabaseManidzer.class.getName(),"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_VNOSI);
onCreate(db);
}
Respostas:
3 para resposta № 1Sim, se você estiver usando um DatabaseHelper, existe uma maneira de atualizar o esquema do banco de dados.
você pode encontrar muitos tutoriais sobre como fazer isso.
Aqui está um. Esquema SQLite DB de atualização do Android?
O método que você está procurando é onUpgrade
E não renomeie as variáveis que referenciam as colunas reais da tabela, a menos que você altere os nomes reais das colunas primeiro. Você precisará usar consultas sql para fazer o que quiser.
0 para resposta № 2
Você pode simplesmente adicionar uma consulta ALTER TABLE no diretórioonUpgrade e, em seguida, não se esqueça de aumentar a versão do banco de dados em sua classe auxiliar, dessa forma você manterá os dados existentes na tabela. Ou, se você ainda estiver em desenvolvimento, basta soltar a tabela e recriá-la com o novo alterar. Se você me der um exemplo do que está tentando obter, posso ajudá-lo mais.
Obrigado.
0 para resposta № 3
se versão do banco de dados: 6 Ex: Existe uma tabela com 5 colunas
Quando você atualiza para: 7
- Precisamos adicionar as colunas ao criar uma tabela
método onUpgrade:
if (oldVersion <7)
{ db.execSQL (DATABASE_ALTER_ADD_PAPER_PAID); db.execSQL (DATABASE_ALTER_LAST_UPLOADED); db.execSQL (DATABASE_ALTER_PAPER_LABEL); }
Após as duas operações acima, ele funcionará bem para o usuário de instalação nova e o usuário de atualização de aplicativo
Saudações Vinod