[Android] Adicionar coluna em tabela

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] .

:slight_smile:

[/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)