[Android] Adicionar coluna em tabela

7 respostas
P

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

7 Respostas

R

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

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

P

Oi Rachel, na verdade eu quero saber se eu alterando o sql do create table ja resolve. ex:

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
	}
R

[i]Aparece algum erro ?

Para mim, vejo que está alterando o sql. O que aparece de erro para você?

[/i]

M

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.

P

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

F

Faça como o Marky fez, altere no onUpgrade do seu banco de dados…

M

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)

Criado 5 de setembro de 2011
Ultima resposta 5 de set. de 2011
Respostas 7
Participantes 4