DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Criando um Cadastro de Pessoa para android com (SQLCompact)

Neste artigo irei ensinar como fazer um cadastro de pessoa para android salvando em banco de dados SQLCompact, estarei utilizando o eclipse para criar o aplicativo.

Vamos lá, Crie um projeto android com o nome que desejar, no meu caso vou dar o nome de cadPessoa.


Feito isso, vamos criar as seguintes classes "BuscarPessoa", "CadastroPessoa", "Pessoa", "PessoaListAdapter", "EditarPessoa", "RepositorioPessoa", "RepositorioPessoaScript", "SQLiteHelper", delete a class Activity que sera criada sozinha. devera ficar da seguinte maneira :


Agora vamos configura nossa aplicação para ser reproduzida na tela, ache o "AndroidManifest.xml", preste muita atenção nessa parte. de um duplo click nele, selecione a aba abaixo escrito "Application", remove a classe Activity que foi criada, sozinha, deverar ficar da seguinte maneira:


Agora na aba "AndroidManifest.xml" deixe da seguinte maneira :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.br.CadPessoa"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
       <activity android:name="CadastroPessoa">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"></action>
                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent-filter>
        </activity>
        <activity android:name="EditarPessoa"></activity>
        <activity android:name="BuscarPessoa"></activity>

    </application>

</manifest>

Obs: Nesse XML configurei as classes de visual, e informei a classe que será criada por inicio.

Crie uma pasta Chamada "drawable" acima das outras pastas "drawable *.*"

Nas pastas drawable adiciona as seguintes imagens (Imagens estarão disponíveis para download).

Agora vamos ajeitar nossas classes e o layout das telas.

Vamos criar primeiro os formulários para nosso visual, na pasta res, crie 3 arquivos "Android XML Layout File" com os seguintes nomes "pessoa_linha_tabela", "form_buscar_pessoa", "form_editar_pessoa", deleta o main.xml

No form_buscar_pessoa, de um duplo click, e na aba "form_buscar_pessoa.xml", deixe da seguinte maneira.


<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    android:background="#ffffff">
    <TableRow>
        <TextView android:id="@+id/text1" android:text="Nome:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoNome" android:width="240px" />
    </TableRow>
    <TableRow>
        <ImageButton android:src="@drawable/pesquisar" android:id="@+id/btBuscar" android:text="Buscar" />
    </TableRow>
    <TableRow>
        <TextView android:id="@+id/text2" android:text="Cpf:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoCpf"  />
    </TableRow>
    <TableRow>
        <TextView android:id="@+id/text3" android:text="Idade:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoIdade"  />
    </TableRow>
</TableLayout>

agora no form_editar_pessoa insira o seguinte codigo:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    android:background="#ffffff">
    <TableRow>
        <TextView android:id="@+id/text1" android:text="Nome:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoNome" android:width="240px" />
    </TableRow>
    <TableRow>
        <TextView android:id="@+id/text2" android:text="Cpf:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoCpf"  />
    </TableRow>
    <TableRow>
        <TextView android:id="@+id/text3" android:text="Idade:"
            android:textColor="#000000" />
        <EditText android:id="@+id/campoIdade"  />
    </TableRow>
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="fill_parent">
        <ImageButton android:src="@drawable/cancelar" android:id="@+id/btCancelar" android:text="Cancelar" 
            android:layout_width="wrap_content" android:layout_height="wrap_content" />
        <ImageButton android:src="@drawable/salvar" android:id="@+id/btSalvar" android:text=" Salvar " 
            android:layout_width="wrap_content" android:layout_height="wrap_content" />
        <ImageButton android:src="@drawable/excluir" android:id="@+id/btExcluir" android:text=" Excluir " 
            android:layout_width="wrap_content" android:layout_height="wrap_content" />
    </LinearLayout>
</TableLayout>

agora no pessoa_linha_tabela insira o seguinte codigo:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
>
    <TextView android:id="@+id/nome"
        android:layout_height="30dip" android:layout_width="160sp"
    />
    <TextView android:id="@+id/cpf"
        android:layout_height="30dip" android:layout_width="100sp"
    />
    <TextView android:id="@+id/idade"
        android:layout_height="30dip" android:layout_width="40sp"
    />
</LinearLayout>

A parte de layout, já está pronta, agora vamos fazer a parte das classes, deixe a classe Pessoa da seguinte maneira :

package com.br.CadPessoa;

import android.content.ContentUris;
import android.net.Uri;
import android.provider.BaseColumns;


public class Pessoa {

    public static String[] colunas = new String[] { Pessoas._ID, Pessoas.NOME, Pessoas.CPF, Pessoas.IDADE };

    public static final String AUTHORITY = "com.br.CadPessoa.provider.pessoa";
    
    public long id;
    public String nome;
    public String cpf;
    public int idade;

    public Pessoa() {
        
    }

    public Pessoa(String nome, String cpf, int idade) {
        super();
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
    }

    public Pessoa(long id, String nome, String cpf, int idade) {
        super();
        this.id = id;
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
    }

    /**
     * Classe interna para representar as colunas e ser utilizada por um Content
     * Provider
     * 
     * Filha de BaseColumns que já define (_id e _count), para seguir o padrão
     * Android
     */
    public static final class Pessoas implements BaseColumns {
    
        // Não pode instanciar esta Classe
        private Pessoas() {
        }
    
        public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/pessoas");
    
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.pessoas";
    
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.pessoas";
    
        public static final String DEFAULT_SORT_ORDER = "_id ASC";
    
        public static final String NOME = "nome";
        public static final String CPF = "cpf";
        public static final String IDADE = "IDADE";
    
        public static Uri getUriId(long id) {
            // Adiciona o id na URI default do /pessoas
            Uri uriPessoas = ContentUris.withAppendedId(Pessoas.CONTENT_URI, id);
            return uriPessoas;
        }
    }

    @Override
    public String toString() {
        return "Nome: " + nome + ", cpf: " + cpf + ", Idade: " + idade;
    }

    
}


Deixe a classe CadastroPessoa da seguinte maneira :

package com.br.CadPessoa;

import java.util.List;

import com.br.CadPessoa.Pessoa.Pessoas;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;

public class CadastroPessoa extends ListActivity {
    protected static final int INSERIR_EDITAR = 1;
    protected static final int BUSCAR = 2;

    public static RepositorioPessoa repositorio;

    private List<Pessoa> pessoas;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        repositorio = new RepositorioPessoaScript(this);
        atualizarLista();
    }

    protected void atualizarLista() {
        // Pega a lista de pessoas e exibe na tela
        pessoas = repositorio.listarPessoas();

        // Adaptador de lista customizado para cada linha de uma pessoa
        setListAdapter(new PessoaListAdapter(this, pessoas));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu.add(0, INSERIR_EDITAR, 0, "Inserir Novo").setIcon(R.drawable.novo);
        menu.add(0, BUSCAR, 0, "Buscar").setIcon(R.drawable.pesquisar);
        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        // Clicou no menu
        switch (item.getItemId()) {
        case INSERIR_EDITAR:
            // Abre a tela com o formulário para adicionar
            startActivityForResult(new Intent(this, EditarPessoa.class), INSERIR_EDITAR);
            break;
        case BUSCAR:
            // Abre a tela para buscar a pessoa pelo nome
            startActivity(new Intent(this, BuscarPessoa.class));
            break;
        }
        return true;
    }

    @Override
    protected void onListItemClick(ListView l, View v, int posicao, long id) {
        super.onListItemClick(l, v, posicao, id);
        editarPessoa(posicao);
    }

    // Recupera o id da pessoa, e abre a tela de edição
    protected void editarPessoa(int posicao) {
        // Usuário clicou em alguma pessoa da lista
        // Recupera a pessoa selecionado
        Pessoa pessoa = pessoas.get(posicao);
        // Cria a intent para abrir a tela de editar
        Intent it = new Intent(this, EditarPessoa.class);
        // Passa o id da pessoa como parâmetro
        it.putExtra(Pessoas._ID, pessoa.id);
        // Abre a tela de edição
        startActivityForResult(it, INSERIR_EDITAR);
    }

    @Override
    protected void onActivityResult(int codigo, int codigoRetorno, Intent it) {
        super.onActivityResult(codigo, codigoRetorno, it);

        // Quando a activity EditarPessoa retornar, seja se foi para adicionar vamos atualizar a lista
        if (codigoRetorno == RESULT_OK) {
            // atualiza a lista na tela
            atualizarLista();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // Fecha o banco
        repositorio.fechar();
    }

}

Agora a classe EditarPessoa da seguinte maneira :

package com.br.CadPessoa;

import com.br.CadPessoa.Pessoa.Pessoas;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;

public class EditarPessoa extends Activity {

    static final int RESULT_SALVAR = 1;
    static final int RESULT_EXCLUIR = 2;

    // Campos texto
    private EditText campoNome;
    private EditText campoCpf;
    private EditText campoIdade;
    private Long id;

    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        setContentView(R.layout.form_editar_pessoa);

        campoNome = (EditText) findViewById(R.id.campoNome);
        campoCpf = (EditText) findViewById(R.id.campoCpf);
        campoIdade = (EditText) findViewById(R.id.campoIdade);

        id = null;

        Bundle extras = getIntent().getExtras();
        // Se for para Editar, recuperar os valores ...
        if (extras != null) {
            id = extras.getLong(Pessoas._ID);

            if (id != null) {
                // é uma edição, busca o pessoa...
                Pessoa p = buscarPessoa(id);
                campoNome.setText(p.nome);
                campoCpf.setText(p.cpf);
                campoIdade.setText(String.valueOf(p.idade));
            }
        }

        ImageButton btCancelar = (ImageButton) findViewById(R.id.btCancelar);
        btCancelar.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                setResult(RESULT_CANCELED);
                // Fecha a tela
                finish();
            }
        });

        // Listener para salvar a pessoa
        ImageButton btSalvar = (ImageButton) findViewById(R.id.btSalvar);
        btSalvar.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                salvar();
            }
        });

        ImageButton btExcluir = (ImageButton) findViewById(R.id.btExcluir);

        if (id == null) {
            // Se id está nulo, não pode excluir
            btExcluir.setVisibility(View.INVISIBLE);
        } else {
            // Listener para excluir a pessoa
            btExcluir.setOnClickListener(new OnClickListener() {
                public void onClick(View view) {
                    excluir();
                }
            });
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Cancela para não ficar nada na tela pendente
        setResult(RESULT_CANCELED);

        // Fecha a tela
        finish();
    }

    public void salvar() {

        int idade = 0;
        try {
            idade = Integer.parseInt(campoIdade.getText().toString());
        } catch (NumberFormatException e) {
        }

        Pessoa pessoa = new Pessoa();
        if (id != null) {
            // É uma atualização
            pessoa.id = id;
        }
        pessoa.nome = campoNome.getText().toString();
        pessoa.cpf = campoCpf.getText().toString();
        pessoa.idade = idade;

        // Salvar
        salvarPessoa(pessoa);

        // OK
        setResult(RESULT_OK, new Intent());

        // Fecha a tela
        finish();
    }

    public void excluir() {
        if (id != null) {
            excluirPessoa(id);
        }

        // OK
        setResult(RESULT_OK, new Intent());

        // Fecha a tela
        finish();
    }

    // Buscar a pessoa pelo id
    protected Pessoa buscarPessoa(long id) {
        return CadastroPessoa.repositorio.buscarPessoa(id);
    }

    // Salvar a pessoa
    protected void salvarPessoa(Pessoa pessoa) {
        CadastroPessoa.repositorio.salvar(pessoa);
    }

    // Excluir a pessoa
    protected void excluirPessoa(long id) {
        CadastroPessoa.repositorio.deletar(id);
    }

    
}

Agora a classe Pessoa da seguinte maneira :

package com.br.CadPessoa;

import android.content.ContentUris;
import android.net.Uri;
import android.provider.BaseColumns;

public class Pessoa {

    public static String[] colunas = new String[] { Pessoas._ID, Pessoas.NOME, Pessoas.CPF, Pessoas.IDADE };

    public static final String AUTHORITY = "com.br.CadPessoa.provider.pessoa";
    
    public long id;
    public String nome;
    public String cpf;
    public int idade;

    public Pessoa() {
        
    }

    public Pessoa(String nome, String cpf, int idade) {
        super();
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
    }

    public Pessoa(long id, String nome, String cpf, int idade) {
        super();
        this.id = id;
        this.nome = nome;
        this.cpf = cpf;
        this.idade = idade;
    }

    /**
     * Classe interna para representar as colunas e ser utilizada por um Content
     * Provider
     * 
     * Filha de BaseColumns que já define (_id e _count), para seguir o padrão
     * Android
     */
    public static final class Pessoas implements BaseColumns {
    
        // Não pode instanciar esta Classe
        private Pessoas() {
        }
    
        public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/pessoas");
    
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.google.pessoas";
    
        public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.google.pessoas";
    
        public static final String DEFAULT_SORT_ORDER = "_id ASC";
    
        public static final String NOME = "nome";
        public static final String CPF = "cpf";
        public static final String IDADE = "idade";
    
        public static Uri getUriId(long id) {
            // Adiciona o id na URI default do /pessoas
            Uri uriPessoas = ContentUris.withAppendedId(Pessoas.CONTENT_URI, id);
            return uriPessoas;
        }
    }

    @Override
    public String toString() {
        return "Nome: " + nome + ", cpf: " + cpf + ", Idade: " + idade;
    }

    
}

Agora a classe PessoaListAdapter da seguinte maneira :


package com.br.CadPessoa;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class PessoaListAdapter extends BaseAdapter {
    
    private Context context;
    private List<Pessoa> lista;

    public PessoaListAdapter(Context context, List<Pessoa> lista) {
        this.context = context;
        this.lista = lista;
    }

    public int getCount() {
        return lista.size();
    }

    public Object getItem(int position) {
        return lista.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        // Recupera a pessoa da posição atual
        Pessoa p = lista.get(position);

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.pessoa_linha_tabela, null);

        // Atualiza o valor do TextView
        TextView nome = (TextView) view.findViewById(R.id.nome);
        nome.setText(p.nome);

        TextView cpf = (TextView) view.findViewById(R.id.cpf);
        cpf.setText(p.cpf);

        TextView idade = (TextView) view.findViewById(R.id.idade);
        idade.setText(String.valueOf(p.idade));

        return view;
    }

}

Agora a classe RepositorioPessoa da seguinte maneira :


package com.br.CadPessoa;

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

import com.br.CadPessoa.Pessoa.Pessoas;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.util.Log;

public class RepositorioPessoa {

    private static final String CATEGORIA = "dados";

    // Nome do banco
    private static final String NOME_BANCO = "dados_android";
    // Nome da tabela
    public static final String NOME_TABELA = "pessoa";

    protected SQLiteDatabase db;

    public RepositorioPessoa(Context ctx) {
        // Abre o banco de dados já existente
        db = ctx.openOrCreateDatabase(NOME_BANCO, Context.MODE_PRIVATE, null);
    }

    protected RepositorioPessoa() {
        // Apenas para criar uma subclasse...
    }

    // Salva a pessoa, insere um novo ou atualiza
    public long salvar(Pessoa pessoa) {
        long id = pessoa.id;

        if (id != 0) {
            atualizar(pessoa);
        } else {
            // Insere novo
            id = inserir(pessoa);
        }

        return id;
    }

    // Insere uma nova pessoa
    public long inserir(Pessoa pessoa) {
        ContentValues values = new ContentValues();
        values.put(Pessoas.NOME, pessoa.nome);
        values.put(Pessoas.CPF, pessoa.cpf);
        values.put(Pessoas.IDADE, pessoa.idade);

        long id = inserir(values);
        return id;
    }

    // Insere uma nova pessoa
    public long inserir(ContentValues valores) {
        long id = db.insert(NOME_TABELA, "", valores);
        return id;
    }

    // Atualiza a pessoa no banco. O id da pessoa é utilizado.
    public int atualizar(Pessoa pessoa) {
        ContentValues values = new ContentValues();
        values.put(Pessoas.NOME, pessoa.nome);
        values.put(Pessoas.CPF, pessoa.cpf);
        values.put(Pessoas.IDADE, pessoa.idade);

        String _id = String.valueOf(pessoa.id);

        String where = Pessoas._ID + "=?";
        String[] whereArgs = new String[] { _id };

        int count = atualizar(values, where, whereArgs);

        return count;
    }

    // Atualiza a pessoa com os valores abaixo
    // A cláusula where é utilizada para identificar a pessoa a ser atualizado
    public int atualizar(ContentValues valores, String where, String[] whereArgs) {
        int count = db.update(NOME_TABELA, valores, where, whereArgs);
        Log.i(CATEGORIA, "Atualizou [" + count + "] registros");
        return count;
    }

    // Deleta a pessoa com o id fornecido
    public int deletar(long id) {
        String where = Pessoas._ID + "=?";

        String _id = String.valueOf(id);
        String[] whereArgs = new String[] { _id };

        int count = deletar(where, whereArgs);

        return count;
    }

    // Deleta a pessoa com os argumentos fornecidos
    public int deletar(String where, String[] whereArgs) {
        int count = db.delete(NOME_TABELA, where, whereArgs);
        Log.i(CATEGORIA, "Deletou [" + count + "] registros");
        return count;
    }

    // Busca a pessoa pelo id
    public Pessoa buscarPessoa(long id) {
        // select * from pessoa where _id=?
        Cursor c = db.query(true, NOME_TABELA, Pessoa.colunas, Pessoas._ID + "=" + id, null, null, null, null, null);

        if (c.getCount() > 0) {

            // Posicinoa no primeiro elemento do cursor
            c.moveToFirst();

            Pessoa pessoa = new Pessoa();

            // Lê os dados
            pessoa.id = c.getLong(0);
            pessoa.nome = c.getString(1);
            pessoa.cpf = c.getString(2);
            pessoa.idade = c.getInt(3);

            return pessoa;
        }

        return null;
    }

    // Retorna um cursor com todas as pessoas
    public Cursor getCursor() {
        try {
            // select * from pessoas
            return db.query(NOME_TABELA, Pessoa.colunas, null, null, null, null, null, null);
        } catch (SQLException e) {
            Log.e(CATEGORIA, "Erro ao buscar as pessoas: " + e.toString());
            return null;
        }
    }

    // Retorna uma lista com todas as pessoas
    public List<Pessoa> listarPessoas() {
        Cursor c = getCursor();

        List<Pessoa> pessoas = new ArrayList<Pessoa>();

        if (c.moveToFirst()) {

            // Recupera os índices das colunas
            int idxId = c.getColumnIndex(Pessoas._ID);
            int idxNome = c.getColumnIndex(Pessoas.NOME);
            int idxCpf = c.getColumnIndex(Pessoas.CPF);
            int idxidade = c.getColumnIndex(Pessoas.IDADE);

            // Loop até o final
            do {
                Pessoa pessoa = new Pessoa();
                pessoas.add(pessoa);

                // recupera os atributos da pessoa
                pessoa.id = c.getLong(idxId);
                pessoa.nome = c.getString(idxNome);
                pessoa.cpf = c.getString(idxCpf);
                pessoa.idade = c.getInt(idxidade);

            } while (c.moveToNext());
        }

        return pessoas;
    }

    // Busca a pessoa pelo nome "select * from pessoa where nome=?"
    public Pessoa buscarPessoaPorNome(String nome) {
        Pessoa pessoa = null;

        try {
            // Idem a: SELECT _id,nome,cpf,idade from pessoa where nome = ?
            Cursor c = db.query(NOME_TABELA, Pessoa.colunas, Pessoas.NOME + "='" + nome + "'", null, null, null, null);

            // Se encontrou...
            if (c.moveToNext()) {

                pessoa = new Pessoa();

                // utiliza os métodos getLong(), getString(), getInt(), etc para recuperar os valores
                pessoa.id = c.getLong(0);
                pessoa.nome = c.getString(1);
                pessoa.cpf = c.getString(2);
                pessoa.idade = c.getInt(3);
            }
        } catch (SQLException e) {
            Log.e(CATEGORIA, "Erro ao buscar a pessoa pelo nome: " + e.toString());
            return null;
        }

        return pessoa;
    }

    // Busca uma pessoa utilizando as configurações definidas no
    // SQLiteQueryBuilder
    // Utilizado pelo Content Provider de pessoa
    public Cursor query(SQLiteQueryBuilder queryBuilder, String[] projection, String selection, String[] selectionArgs,
            String groupBy, String having, String orderBy) {
        Cursor c = queryBuilder.query(this.db, projection, selection, selectionArgs, groupBy, having, orderBy);
        return c;
    }

    // Fecha o banco
    public void fechar() {
        // fecha o banco de dados
        if (db != null) {
            db.close();
        }
    }
    
}

Agora a classe RepositorioPessoaScript da seguinte maneira :


package com.br.CadPessoa;

import android.content.Context;

public class RepositorioPessoaScript extends RepositorioPessoa {

    // Script para fazer drop na tabela
    private static final String SCRIPT_DATABASE_DELETE = "DROP TABLE IF EXISTS pessoa";

    // Cria a tabela com o "_id" sequencial
    private static final String[] SCRIPT_DATABASE_CREATE = new String[] {
            "create table pessoa ( _id integer primary key autoincrement, nome text not null,cpf text not null,idade text not null);",
            "insert into pessoa(nome,cpf,idade) values('Jeferson Zonta','123412332332',21);",
            "insert into pessoa(nome,cpf,idade) values('Ambrozio silva','56784564564',60);",
            "insert into pessoa(nome,cpf,idade) values('Edinando A.','5465631565',19);" };

    // Nome do banco
    private static final String NOME_BANCO = "baco_dados";

    // Controle de versão
    private static final int VERSAO_BANCO = 1;

    // Nome da tabela
    public static final String TABELA_PESSOA = "pessoa";

    // Classe utilitária para abrir, criar, e atualizar o banco de dados
    private SQLiteHelper dbHelper;

    // Cria o banco de dados com um script SQL
    public RepositorioPessoaScript(Context ctx) {
        // Criar utilizando um script SQL
        dbHelper = new SQLiteHelper(ctx, RepositorioPessoaScript.NOME_BANCO, RepositorioPessoaScript.VERSAO_BANCO,
                RepositorioPessoaScript.SCRIPT_DATABASE_CREATE, RepositorioPessoaScript.SCRIPT_DATABASE_DELETE);

        // abre o banco no modo escrita para poder alterar também
        db = dbHelper.getWritableDatabase();
    }

    // Fecha o banco
    @Override
    public void fechar() {
        super.fechar();
        if (dbHelper != null) {
            dbHelper.close();
        }
    }
}

E enfim a classe SQLiteHelper :


package com.br.CadPessoa;

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

class SQLiteHelper extends SQLiteOpenHelper {

    private static final String CATEGORIA = "livro";

    private String[] scriptSQLCreate;
    private String scriptSQLDelete;

    /**
     * Cria uma instância de SQLiteHelper
     * 
     * @param context
     * @param nomeBanco nome do banco de dados
     * @param versaoBanco versão do banco de dados (se for diferente é para atualizar)
     * @param scriptSQLCreate SQL com o create table..
     * @param scriptSQLDelete SQL com o drop table...
     */
    SQLiteHelper(Context context, String nomeBanco, int versaoBanco, String[] scriptSQLCreate, String scriptSQLDelete) {
        super(context, nomeBanco, null, versaoBanco);
        this.scriptSQLCreate = scriptSQLCreate;
        this.scriptSQLDelete = scriptSQLDelete;
    }

    @Override
    // Criar novo banco...
    public void onCreate(SQLiteDatabase db) {
        Log.i(CATEGORIA, "Criando banco com sql");
        int qtdeScripts = scriptSQLCreate.length;

        // Executa cada sql passado como parâmetro
        for (int i = 0; i < qtdeScripts; i++) {
            String sql = scriptSQLCreate[i];
            Log.i(CATEGORIA, sql);
            // Cria o banco de dados executando o script de criação
            db.execSQL(sql);
        }
    }

    @Override
    // Mudou a versão...
    public void onUpgrade(SQLiteDatabase db, int versaoAntiga, int novaVersao) {
        Log.w(CATEGORIA, "Atualizando da versão " + versaoAntiga + " para " + novaVersao + ". Todos os registros serão deletados.");
        Log.i(CATEGORIA, scriptSQLDelete);
        // Deleta as tabelas...
        db.execSQL(scriptSQLDelete);
        // Cria novamente...
        onCreate(db);
    }

}

O sistema ficará da seguinte maneira .







Fico por aqui e até a próxima, espero que gostem do artigo.

att.




    27 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Senai Sc - Serviço Nacional De Aprendizagem Industrial
Opa amigo! Voce Poderia postar o codigo da classe BurcarPessoa, que eu nao vi no post.

Obrigado
[há +1 mês] - Responder

 

[autor] Jeferson Zonta
package com.br.CadPessoa;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class BuscarPessoa extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);

setContentView(R.layout.form_buscar_pessoa);

ImageButton btBuscar = (ImageButton) findViewById(R.id.btBuscar);
btBuscar.setOnClickListener(this);
}

@Override
protected void onPause() {
super.onPause();
// Cancela para não ficar nada pendente na tela
setResult(RESULT_CANCELED);

// Fecha a tela
finish();
}

/**
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
public void onClick(View view) {

EditText nome = (EditText) findViewById(R.id.campoNome);
EditText cpf = (EditText) findViewById(R.id.campoCpf);
EditText idade = (EditText) findViewById(R.id.campoIdade);

// Recupera o nome da pessoa
String nomePessoa = nome.getText().toString();

// Busca a pessoa pelo nome
Pessoa pessoa = buscarPessoa(nomePessoa);

if (pessoa != null) {
// Atualiza os campos com o resultado
cpf.setText(pessoa.cpf);
idade.setText(String.valueOf(pessoa.idade));
} else {
// Limpa os campos
cpf.setText("");
idade.setText("");

Toast.makeText(BuscarPessoa.this, "Nenhuma pessoa encontrada", Toast.LENGTH_SHORT).show();
}
}

// Busca um carro pelo nome
protected Pessoa buscarPessoa(String nomePessoa) {
Pessoa pessoa = CadastroPessoa.repositorio.buscarPessoaPorNome(nomePessoa);
return pessoa;
}

}


ta ai :D
[há +1 mês] - Responder
 

Dyego Souza Do Carmo
Feito ?

Valeu !
[há +1 mês] - Responder
 

Daniel De Paulo E Silva
Tem como postar as imagens? Não achei o download
[há +1 mês] - Responder
 

Wesley Yamazack
Olá Daniel tudo bem ?

Quais seriam as imagens que você esta solicitando ?

att

Wesley Y
[há +1 mês] - Responder
 

[autor] Jeferson Zonta
As imagens dos ícones que te mandei junto com o projeto..
[há +1 mês] - Responder
 

Wesley Yamazack
Olá Daniel,

As imagens foram disponibilizadas para download. Baixe no próprio post, blz?

Um abraço.
[há +1 mês] - Responder
 

Thiago Ferreira Valins
Olá, gostei do artigo publicado! Eu segui as instruções do documento e montei o projeto. Tentei rodá-lo no Eclipse e está dando a seguinte mensagem de erro de execução: "The application CadPessoa (process com.br.CadPessoa) has stopped unexpectedly. Please try again".
Estou usando o emulador do Android 2.2.
Você poderia me ajudar?
Teria como disponibilizar o projeto para download?
Abraços
[há +1 mês] - Responder

 

[autor] Jeferson Zonta
Bom thiago, me manda seu email, que le envio o projeto por email, att.
[há +1 mês] - Responder
 

Devmedia - Equipe De Moderacao
Thiago, o arquivo tbm se encontra no post, na opção "código fonte"
[há +1 mês] - Responder
 

Daniel Fellipe
Tentei rodar o meu projeto, porem está com o mesmo erro do Thiago Ferreira Valins..

Alguem pode mandar o projeto pra mim por email?

segue meu email:

thales.bm@hotmail.com
[há +1 mês] - Responder

 

[autor] Jeferson Zonta
Baixa por aqui o fontes...
tem ali no topo do artigo para download..

att.
[há +1 mês] - Responder
 

Frederico Brigatte
Boa tarde,

Muito bom o artigo. Gostaria de saber somente como chamar outra tela pelo menu. Criei o xml e a classe. Na classe que criei, coloquei o seguinte:

import android.app.Activity;
import android.os.Bundle;

public class CadastrarCliente extends Activity {

@Override
protected void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.form_cadastrar_cliente);
}
}

Na principal esta assim:

@Override
public boolean onCreateOptionsMenu(Menu menu){
boolean result = super.onCreateOptionsMenu(menu);
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0,Cadastrar Cliente").setIcon(R.drawable.usuarios);
menu.add(0, 2, 0, "Pesquisar Cliente").setIcon(R.drawable.pesquisar);
return result;
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId())
{
case 1:
// mensagemExibir("Cadastrar Cliente","Cadastrar Cliente");
startActivity(new Intent(this, CadastrarCliente.class));
break;
case 2:
mensagemExibir("Pesquisar Cliente","Pesquisar Cliente");break;
}
return super.onOptionsItemSelected(item);
}
[há 26 dias] - Responder

 

Frederico Brigatte
Estou precisando de uma consulta com like, que mostre na lista o resultado e também mostre o selecionado da lista.

Exemplo: digito parte de um nome e mostre o resultado numa lista. Escolho na lista um nome e mostre todos os dados do item da lista selecionado.
[há 16 dias] - Responder

 

Frederico Brigatte
Como fazer a lista na tela de consulta? Em vez de aparece nos campos, o resultado numa lista e escolher o nome que deseja?
[há 25 dias] - Responder

 

Wesley Yamazack
Olá Frederico, entramos em contato com o autor para que o mesmo possa lhe ajudar. Pedimos que aguarde um pouco pro mesmo poder retornar o contato.

Um abraço.
[há 25 dias] - Responder
 

Frederico Brigatte
Ok, estou no aguardo...
[há 24 dias] - Responder
 

[autor] Jeferson Zonta
Opa, cara isso é simples, vc coloca um textBox e logo a baixo uma lista, do mesmo modo que eu faço a pesquisa para trazer os valores pó textBox, vc insere na lista, cria um método que retorna uma lista com os valores achado, conforme fiz para mostrar os itens gravado.

Desculpe pela demora para responder,

Att.
[há 24 dias] - Responder
 

Frederico Brigatte
Poderia me ajudar numa coisa? Meu email é:
frederico.brigatte@itelefonica.com.br

Tenho que fazer um cadastro parecido com esse.

Clientes - id, nome, telefone, celular, email, datacad e nasc.
Carros - id, veículo, placa, id_cliente, tipo

O tipo é: Carro pequeno, Carro médio e Carro grande

Não estou conseguindo adaptar esse exemplo. Poderia me explicar melhor?
[há 24 dias] - Responder
 

Wesley Yamazack
Olá Frederico ,entramos em contato com o autor para que o mesmo possa lhe ajudar.

Um abraço.
[há 24 dias] - Responder
 

Frederico Brigatte
Ok, estou no aguardo, obrigado.
[há 23 dias] - Responder
 

Dyego Souza Do Carmo
Checou seu email frederico ?
[há 15 dias] - Responder
 

[autor] Jeferson Zonta
Bom dia, poderia até te ajudar, mais no caso isso foge da realidade, do artigo, aconselharia a abrir um forum para as perguntas, e ajudas, mais se precisar estou disponível via email para te ajudar.



Att.
[há 13 dias] - Responder
 

Frederico Brigatte
Não tem nada.

frederico.brigatte@itelefonica.com.br
[há 13 dias] - Responder
 

Dyego Souza Do Carmo
Reenviei , poderia verificar ?


As vezes cai na spam :(

Valeu !
[há 7 dias] - Responder
 

Marcos Roberto Da Cruz
ola me tira uma duvida pra fazer em android eu uso o delphi prism?
[há 3 dias] - Responder

 

[autor] Jeferson Zonta
Não, vc utiliza o Eclipse.
[há 2 dias] - Responder
 



[Este post ainda não foi associado a uma sequência]
Publicidade
Autor
Jeferson Zonta

Formado em Tec. em Analise e desenvolvimento de sistema(UNIVEL), reside em Cascavel - PR, atualmente trabalhando na Coopavel Cooperativa Agroindustrial no desenvolvimento com C#, Delphi.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03