Skip to content

Banco de Dados em Android

Banco de Dados em Android

Banco de Dados em AndroidFala galera!

Hoje vamos aprender a salvar dados de um formulário no banco de dados em Android! Com isso, sua aplicação poderá salvar informações, e um novo leque de possibilidades de aplicações foi aberto!! (lista de contatos, informações pessoas, etc.)

Se você ainda não viu o último tutorial da série, aproveite e aprenda um pouco mais sobre como criar um ListView personalizado no Android. Se você continua é preguiçoso e apenas baixou o projeto, importe-o para sua workspace. Para tal, vá em File → Import… → Existing Projects into Workspace, dentro de General.

Banco de dados em Android

Nativamente, o Android disponibiliza uma forma de persistir dados utilizando o SQLite. Ele é leve e muito fácil de utilizar.

Se você não tem experiência com SQL, não se preocupe: o aprendizado é fácil e rápido, e logo você estará entendido dos conceitos.

Inicialmente, vamos criar uma classe chamada Dados, que irá estender SQLiteOpenHelper.

public class Dados extends SQLiteOpenHelper {

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
 
}

Ao fazer o procedimento, será acusado um erro: o construtor da classe não foi criado. O construtor serve para acessar os métodos desta classe. Para cria-lo, antes vamos definir dois atributos privados, estáticos e finais NOME_BANCO e VERSAO_SCHEMA. Como o próprio nome diz, estes atributos são referentes ao nome e versão do schema do banco de dados que vamos criar.

private static final String NOME_BANCO = "listacarros.db";
private static final int VERSAO_SCHEMA = 1;

Feito isso, vamos instanciar nosso construtor da classe (que necessita de um parâmetro do tipo Context), chamando o método super() e passando os atributos necessários.

public Dados(Context context) {
    super(context, NOME_BANCO, null, VERSAO_SCHEMA);
}

Depois de criar o construtor, vamos modificar o método onCreate(). Nesse método deverão ser passados os SQLs de criação das tabelas. No nosso caso, vamos criar apenas uma tabela chamada carros.

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE carros("
                                   + "id INTEGER PRIMARY KEY AUTOINCREMENT, veiculo TEXT, ano TEXT, cor TEXT);");
}

O método onUpgrade() não será modificado, pois ele somente é chamado quando há uma atualização. Porém, ele não pode ser apagado, pois é obrigatório na classe.

O próximo passo será criar um método que irá salvar os dados no banco. Este método irá receber como parâmetros os dados do carro em questão.

public void inserir(String veiculo, String ano, String cor) {
   ContentValues valores = new ContentValues();
   valores.put("veiculo", veiculo);
   valores.put("ano", ano);
   valores.put("cor", cor);
   getWritableDatabase().insert("carros", null, valores);
}

Precisamos também criar um método para recuperar todos os carros cadastrados no banco.

public Cursor obterTodos() {
    return getReadableDatabase().rawQuery(
                                   "select * FROM carros ORDER BY veiculo", null);
}

OBS: Corrija todos os erros de importação com Ctrl + Shift + O.

Vamos agora modificar nossa classe principal ListaCarros, alterando como a listagem é recuperada e modificando a ação do botão Salvar.

Primeiro, vamos criar um atributo do tipo Dados, nossa classe previamente criada.

Dados dados;

No método onCreate(), vamos chamar o construtor da classe Dados passando o contexto da classe ListaCarros (atributo this).

dados = new Dados(this);

Feito isto, estamos prontos para salvar os dados no banco!

Modifique a ação do botão salvar de maneira que os dados sejam armazenados no banco de dados através do método inserir() que criamos. Vamos também chamar o método atualizaLista(), o qual falaremos a seguir.

salvar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        dados.inserir(veiculo.getText().toString(), ano.getText().toString(), cor.getText().toString());
    }
});

Vamos agora modificar nossa lista. De início, criar um novo atributo chamado carros do tipo Cursor, que servirá para armazenar todos os registros do banco de dados.

Cursor carros;

Finalmente, vamos criar o método atualizaLista(), que será responsável por popular nossa lista. Nele, vamos salvar o retorno do método obterTodos() da classe Dados. Logo após, vamos percorrer todos os registros e inserir cada um em nosso adaptador. Só não se esquece de limpar o adaptador para não adicionar registros duplicados.

private void atualizaLista() {
    adaptador.clear(); // Limpa o adaptador para evitar duplicados
    carros = dados.obterTodos();
    carros.moveToFirst(); // Move o ponteiro para o primeiro registro
    while (!carros.isAfterLast()) {
        String veiculo = carros.getString(1).toString();
        String ano = carros.getString(2).toString();
        String cor = carros.getString(3).toString();
        String[] c = { veiculo, ano, cor }; // Cria um array com os dados do carro
        adaptador.add(c); // Adiciona no ArrayList
        carros.moveToNext(); // Move o ponteiro para o próximo registro
    }
    adaptador.notifyDataSetChanged(); // Atualiza a lista
}

Já era! Execute seu projeto e tenha sonhos maravilhosos!

Banco de Dados em Android

Considerações Finais

Muito simples, não? Com pouco trabalho, nossa aplicação ficou um pouco mais interessante. Agora temos banco de dados! No próximo tutorial, vamos aprender a editar e excluir os registros do banco de dados.

Baixe o projeto atual aqui.

Falou, galera!

1 Comment


Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *