Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como excluir uma tabela SQLite

Pesquisando cheguei a essa solução:

public void deleteTabela(SQLiteDatabase db) { db.delete(TABELA, null, null); }

mais como passar o db como parâmetro?

A maioria dos fóruns que achei na net só instruem a deletar todas as linhas, porém minha tabela foi criada com erro e não quero fazer o uptate, quero excluí-la.

Achei na documentação do Android o método deleteDatabase(File file) que recebe o endereço do dataBase, mais não entendi como achar esse endereço. Na verdade não condsegui nem achar a pasta do meu aplicativo no Android ainda, quanto mais o arquivo do banco.. rs

4 respostas

Henrique,

suponho que você tenha uma classe que trate todas as interações com o banco de dados, certo?

Essa classe herda de SQLiteOpenHelper, que por sua vez recebe uma versão no construtor.

Altere o valor da versão e use o método onUpgrade pra fazer um Drop na tabela, mais ou menos como o exemplo abaixo:

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "DROP TABLE IF EXISTS nomeDaTabela";
        db.execSQL(sql);
    onCreate(db);
    }

Antes de tudo, altere o script de criação do banco porque ele vai ser chamado na linha onCreate(db).

Faz um teste e confirma se funcionou. Abraço!

Obrigado pela Atenção João!

Funcionou! mais minha dúvida é com criar um botão excluir tabela? Tentei criar o código abaixo, mais não sei como acessar o banco para passá-lo como parâmetro:

case R.id.deletar_tabela: AlunoDAO alunodao = new AlunoDAO(AlunosMainActivity.this); alunodao.onUpgrade(db, 1, 2); <= alunodao.close(); inflaListView();

solução!

Olá Henrique,

A sua classe AlunoDAO herda de SQLiteOpenHelper portanto, em qualquer momento onde você precisar de uma referência para o banco de dados, você pode utilizar o método getWritableDatabase() herdado da super classe. Desse modo, seu método para remover a tabela ficaria parecido com o abaixo:

public void deletaTabela() {
    SQLiteDatabase db = getWritableDatabase();
    String sql = "DROP TABLE IF EXISTS Alunos;";
    db.execSQL(sql);
}

Abraço!

Entendi! Muito obrigado a vocês!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software