Tutorial SQLite #2 - Criação do Banco de Dados

Boa noite amigos!

Hoje vamos montar a estrutura do banco de dados.
Primeiramente vamos criar o pacote br.com.blogspot.androidandrekunde.dao.banco onde a classe contendo o banco ficará.
E dentro dela criamos o arquivo BaseDAO:
package br.com.blogspot.androidandrekunde.dao.banco;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class BaseDAO extends SQLiteOpenHelper {

    //Nome do banco de dados
    public static final String NOME_BANCO = "exemplosqlite";
    //Versão do banco de dados
    public static final int VERSAO_SCHEMA = 1;

    //Nome da tabela
    public static final String TABELA_CONTATO = "contato";

    //Nome dos campos
    public static final String CAMPO_ID = "_id";
    public static final String CAMPO_NOME = "nome";
    public static final String CAMPO_TELEFONE = "telefone";
    public static final String CAMPO_EMAIL = "email";

    private static final String CRIAR_TABELA_CADASTRO = "CREATE TABLE "
            + TABELA_CONTATO + " (" + CAMPO_ID + " INTEGER PRIMARY KEY, "
            + CAMPO_NOME + " TEXT, "
            + CAMPO_TELEFONE + " TEXT, "
            + CAMPO_EMAIL + " TEXT)";

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CRIAR_TABELA_CADASTRO);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

}

Essa classe será a responsável por criar e atualizar o banco de dados.
Agora criaremos a classe de modelagem de dados, Contato:
package br.com.blogspot.androidandrekunde.model;

import java.io.Serializable;

public class Contato implements Serializable {

    private static final long serialVersionUID = 1L;
    private long id;
    private String nome;
    private String telefone;
    private String email;

    public Contato() {
    }

    public Contato(String nome, String telefone, String email) {
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
    }

    public Contato(long id, String nome, String telefone, String email) {
        this.id = id;
        this.nome = nome;
        this.telefone = telefone;
        this.email = email;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

Precisamos criar também uma classe para realizar a conexão com o banco de dados, chamada ContatoDAO:
package br.com.blogspot.androidandrekunde.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import br.com.blogspot.androidandrekunde.dao.banco.BaseDAO;
import br.com.blogspot.androidandrekunde.model.Contato;

public class ContatoDAO {

    private SQLiteDatabase database;
    private BaseDAO baseDAO;

    public ContatoDAO(Context context) {
        baseDAO = new BaseDAO(context);
    }

    public void open() throws SQLException {
        database = baseDAO.getWritableDatabase();
    }

    public void close() {
        baseDAO.close();
    }

    public long novoContato(Contato contato) {
        ContentValues values = new ContentValues();

        values.put(BaseDAO.CAMPO_NOME, contato.getNome());
        values.put(BaseDAO.CAMPO_TELEFONE, contato.getTelefone());
        values.put(BaseDAO.CAMPO_EMAIL, contato.getEmail());

        return database.insert(BaseDAO.TABELA_CONTATO, null, values);
    }

    public List lerContatos() {
        Cursor c = database.rawQuery("SELECT * FROM " + BaseDAO.TABELA_CONTATO, null);
        List contatos = new ArrayList();
        if (c.moveToFirst()) {
            while (!c.isAfterLast()) {
                Contato contato = new Contato(
                        c.getLong(c.getColumnIndex(BaseDAO.CAMPO_ID)),
                        c.getString(c.getColumnIndex(BaseDAO.CAMPO_NOME)),
                        c.getString(c.getColumnIndex(BaseDAO.CAMPO_TELEFONE)),
                        c.getString(c.getColumnIndex(BaseDAO.CAMPO_EMAIL)));
                contatos.add(contato);
                c.moveToNext();
            }
        }
        c.close();

        return contatos;
    }

    public int atualizarContato(Contato contato) {
        long id = contato.getId();
        ContentValues values = new ContentValues();

        values.put(BaseDAO.CAMPO_NOME, contato.getNome());
        values.put(BaseDAO.CAMPO_TELEFONE, contato.getTelefone());
        values.put(BaseDAO.CAMPO_EMAIL, contato.getEmail());

        return database.update(BaseDAO.TABELA_CONTATO, values, BaseDAO.CAMPO_ID + " = " + id, null);
    }

    public void apagarContato(Contato contato) {
        long id = contato.getId();

        database.delete(BaseDAO.TABELA_CONTATO, BaseDAO.CAMPO_ID + " = " + id, null);
    }

}

Feito isso, vamos atualizar a classe Main, que ficará assim:
package br.com.blogspot.androidandrekunde.tutorialsqlite;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import br.com.blogspot.androidandrekunde.dao.ContatoDAO;
import br.com.blogspot.androidandrekunde.model.Contato;

public class MainActivity extends Activity {

    EditText etNome;
    EditText etTelefone;
    EditText etEmail;

    ContatoDAO contatoDAO;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contatoDAO = new ContatoDAO(this);

        etNome = (EditText) findViewById(R.id.etNome);
        etTelefone = (EditText) findViewById(R.id.etTelefone);
        etEmail = (EditText) findViewById(R.id.etEmail);

        Button btCancelar = (Button) findViewById(R.id.btCancelar);
        Button btSalvar = (Button) findViewById(R.id.btSalvar);

        btCancelar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View arg0) {
                limparTela();
            }
        });

        btSalvar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //Variáveis
                String nome = "";
                String telefone = "";
                String email = "";

                nome = etNome.getText().toString();
                telefone = etTelefone.getText().toString();
                email = etEmail.getText().toString();

                //Cria o contato
                Contato contato = new Contato(nome, telefone, email);

                //Abre a conexão com o banco de dados
                contatoDAO.open();

                //Salva o contato
                contatoDAO.novoContato(contato);

                //Fecha a conexão com o banco de dados
                contatoDAO.close();

                limparTela();
            }
        });
    }

    private void limparTela() {
         etNome.setText("");
         etTelefone.setText("");
         etEmail.setText("");
    }

}
Bom, com isso, o cadastro do contato já está sendo feito. No próximo post faremos a listagem dos contatos cadastrados.
Clique aqui, para baixar este tutorial.

Sobre o autor

André Luís Batista Kunde
Técnico em Informática (2004), Bacharel em Administração com ênfase em Marketing (2009), buscando ser Engenheiro de Software, Trabalhando com software educacional e me aventurando pelo mundo da programação mobile.

0 comentários:

Copyright © 2013 Aprendendo Android and Blogger Themes.