Skip to content

Manipulando dados do banco no Android

Manipulando dados do banco no Android

Fala, galera!

Hoje vamos continuar o tutorial anterior: vamos aprender a alterar e excluir registros, manipulando dados do banco no Android.

Se você ainda não viu o último tutorial da série, clique no link a seguir: banco de dados em 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.

Manipulando dados do banco no Android

No tutorial anterior modificamos nosso projeto para que os dados fossem salvos diretamente no SQLite. Os princípios para alterar e excluir os dados são os mesmos: o próprio SQLite possui métodos próprios para gerenciar os dados, e são bem simples de entender.

Vamos adicionar dois novos métodos na nossa classe Dados. Um será responsável por alterar os dados, e o outro fará a exclusão. O método para alterar receberá como parâmetros os dados do carro em questão, além do seu ID. Já o método de exclusão receberá apenas o ID.

public void alterar(String veiculo, String ano, String cor, int id) {
    ContentValues valores = new ContentValues();
    valores.put("veiculo", veiculo);
    valores.put("ano", ano);
    valores.put("cor", cor);
    getWritableDatabase().update("carros", valores, "id="+id, null);
}
 
public void excluir(int id) {
    getWritableDatabase().delete("carros", "id="+id, null);
}

Agora temos que alterar nossa lista, para que ao clicar em algum item seja exibido um box perguntando para o usuário se ele deseja alterar ou excluir o registro. Porém, antes de implementar o box, precisamos adicionar o ID dos registros no nosso adaptador. Ele não será exibido em nenhum lugar, mas é essencial para manipular os registros. Vamos então alterar o método atualizaLista().

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 id = String.valueOf(carros.getInt(0));
        String[] c = { veiculo, ano, cor, id }; // 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
}

É necessário também adicionarmos um novo atributo do tipo int. Ele servirá para armazenamento do ID do carro que está sendo alterado. Ele está com valor -1 para que saibamos quando um registro está sendo alterado.

int id = -1;

Agora sim, vamos alterar a ação ao clicar em algum item da lista.

// Ao clicar na linha, será exibida um box perguntando ao
// usuário se ele deseja alterar ou excluir o registro. Coloque seu
// código dentro do método onClick().
linha.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        new AlertDialog.Builder(ListaCarros.this)
                       .setTitle("Tutorial YESbr")
                       .setCancelable(false)
                       .setMessage("Selecione uma ação:")
                       .setPositiveButton("Alterar",
                           new DialogInterface.OnClickListener() {
                               public void onClick(
                                   DialogInterface dialog,
                                   int which) {
                                       // Ao clicar em alterar, os dados do
                                       // registro em questão
                                       // serão passados para os campos de
                                       // texto
                                       veiculo.setText(item_linha[0]);
                                       ano.setText(item_linha[1]);
                                       cor.setText(item_linha[2]);
                                       id = Integer.parseInt(item_linha[3]);
                                   }
                               })
                       .setNegativeButton("Excluir",
                           new DialogInterface.OnClickListener() {
                               public void onClick(
                                   DialogInterface dialog,
                                   int which) {
                                       // Ao clicar em excluir, o registro
                                       // é excluído do banco de dados e
                                       // atualiza a lista
                                       dados.excluir(Integer
                                           .parseInt(item_linha[3]));
                                       atualizaLista();
                                   }
                               }).show();
    }
});

Por último, temos que alterar a ação do botão salvar para que seja chamado o método correto em caso de inserção ou alteração de registro.

salvar.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (id == -1) {
            dados.inserir(veiculo.getText().toString(), ano.getText()
                .toString(), cor.getText().toString());
        } else {
            dados.alterar(veiculo.getText().toString(), ano.getText()
                .toString(), cor.getText().toString(), id);
            id = -1; // reseta o ID
        }
        atualizaLista();
    }
});

Finish him! Rode o projeto e veja como ficou.

Manipulando dados do banco no Android

Notas Importantes

1- Anteriormente, nosso projeto não iniciava com a lista já preenchida caso existissem dados salvos no banco. Para fazê-lo, bastaria chamar o método atualizaLista() logo após definirmos o adaptador na nossa lista, dentro do método onCreate().

2- Ao salvar ou alterar algum registro, os campos do formulário ainda continuavam preenchidos. A partir de agora, eles serão “zerados”.

Considerações Finais

Agora já conhecemos as quatro operações básicas do SQLite: selecionar, inserir, alterar e excluir. No próximo tutorial vamos aprender a exibir mensagens na tela do smartphone, informando ao usuário o resultado de uma operação.

Baixe o projeto atual aqui.

Até lá!

1 Comment

  1. […] você ainda não viu o último tutorial da série, clique no link a seguir: manipulando dados do banco no Android. Se você ainda continua é preguiçoso e apenas baixou o projeto, importe-o para sua workspace. […]


Add a Comment

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