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 :
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.
agora no form_editar_pessoa insira o seguinte codigo:
agora no pessoa_linha_tabela insira o seguinte codigo:
A parte de layout, já está pronta, agora vamos fazer a parte das classes, deixe a classe Pessoa da seguinte maneira :
Deixe a classe CadastroPessoa da seguinte maneira :
Agora a classe EditarPessoa da seguinte maneira :
Agora a classe Pessoa da seguinte maneira :
Agora a classe PessoaListAdapter da seguinte maneira :
Agora a classe RepositorioPessoa da seguinte maneira :
Agora a classe RepositorioPessoaScript da seguinte maneira :
E enfim a classe SQLiteHelper :
O sistema ficará da seguinte maneira .
Fico por aqui e até a próxima, espero que gostem do artigo.
att.
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>
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>
<?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>
<?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>
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;
}
}
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();
}
}
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);
}
}
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;
}
}
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;
}
}
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();
}
}
}
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();
}
}
}
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);
}
}
Fico por aqui e até a próxima, espero que gostem do artigo.
att.

27 COMENTÁRIOS
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
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
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 !
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
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.
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
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
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.
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);
}
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.
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.
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.
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?
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.
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.
Att.
[há 13 dias] -
Responder
Frederico Brigatte
Não tem nada.
frederico.brigatte@itelefonica.com.br
frederico.brigatte@itelefonica.com.br
[há 13 dias] -
Responder
Dyego Souza Do Carmo
Reenviei , poderia verificar ?
As vezes cai na spam :(
Valeu !
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
[Este post ainda não foi associado a uma sequência]
Você está em:
canal Java
Publicidade
Jeferson Zonta
Space do autor
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

download


1
0
