Como eu adiciono uma coluna em uma tabela que ja existe.
Eu altero o CREATE TABLE ou tenho que verificar se a coluna ainda não existe e executar um ALTER TABLE
[quote=paulinhopamec]Como eu adiciono uma coluna em uma tabela que ja existe.
Eu altero o CREATE TABLE ou tenho que verificar se a coluna ainda não existe e executar um ALTER TABLE[/quote]
[i]Não tenho certeza absoluta se é isso que você quer mesmo , então vamos lá:
Para verificar se a coluna já existe na tabela é preciso fazer desc nome da tabela.
Vc altera a tabela digitando ALTER TABLE nome da tabela ADD [COLUMN] nome da coluna.
espero que dê certo…testa aí e depois coloca no topico [Resolvido] .
[/i]
Oi Rachel, na verdade eu quero saber se eu alterando o sql do create table ja resolve. ex:
[code]private static final String[] SQL = {“CREATE TABLE Tabela (coluna1 INTEGER, coluna2 TEXT, COLUNA_NOVA TEXT)”}
// e no onCreate()
@Override
public void onCreate(SQLiteDatabase db) {
String query = "";
for (int i=0; i<SQL.length; i++){
query = SQL[i].toString();
db.execSQL(query);
}
}
// ou se eu preciso verificar no onUpdate() se a coluna ainda não existe, ex:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS Tabela”);
this.onCreate(db);
if(!existeColunaNova())
// Executar aqui o ALTER TABLE caso não exista
}
[/code]
[i]Aparece algum erro ?
Para mim, vejo que está alterando o sql. O que aparece de erro para você?
[/i]
Normalmente quando eu mudo a tabela eu faço algo assim:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
LibraryDAO lib = new LibraryDAO(db);
List<LibraryItem> ls = lib.getLibrary();
db.execSQL("DROP TABLE IF EXISTS LIBRARY");
onCreate(db);
lib.add(ls);
}
Assim eu não preciso dar um alter, eu pego os dados, dropo depois insiro denovo.
Eu ainda não implementei pra criar a nova coluna, estou querendo saber qual a melhor forma de fazer isso.
Pelo jeito é apagar a tabela e criá-la novamente
Faça como o Marky fez, altere no onUpgrade do seu banco de dados…
Se o banco suporta alter table provavelmente é melhor, mas vai ficar dificil quando for lançar mais upgrades ainda (nada que um IF NOT EXISTS não resolva)