Você está na página 1de 17

Neste tutorial será abordado, como gravar e recuperar dados

persistentes utilizando o banco de dados SQLite em Android.

A classe Activity contém métodos para manipular o banco SQLite, o


método createDatabase é um que permite criar um banco de dados em
android.

Outro método importante, quando está se manuseando dados é o


método openDatabase, este método permite abrir um banco de dados
para que possa trabalha-lo com ele.

A classe SQLiteDatabase, contém métodos que permitem manusear


instruções de banco de dados. O método execSQL permite passar como
parâmetro uma string SQL, pode inserir dados, criar tabela, alterar
dados, e deletar dados.

O método query da Classe SQLiteDatabase, possibilita realizar uma


consulta no banco de dados, retornando os registros contidos no banco
de dados, a filtragem é determinada nos parâmetro que são passados.

A classe Cursor contém vários métodos que possibilita a manipulação dos


dados retornados pelo método query da classe SQLiteDatabase.

Métodos da classe Cursor

next – é um boolean, retorna true se existir um novo registro.


getColumnIndex – método retorna um inteiro que indica qual é o index
da coluna passada como parâmetro.
getString – retorna uma o campo pesquisado em formato de String,
pede como parâmetro o index da coluna.
getInt – retorna como Inteiro, o campo pesquisado, solicita como
parâmetro o index da coluna.
getDouble – retorna um valor double, que tenha sido retornado na
consulta, solicita como parâmetro o index da coluna.
getFloat – retorna um valor float, que tenha sido retornado na consulta,
solicita como parâmetro o index da coluna.
getLong – retorna um valor long, que tenha sido retornado na consulta,
solicita como parâmetro o index da coluna.

Logo abaixo vou adicionar um código onde é possível manipular dados


em SQLite utilizando android.
A Classe Trabalho permite Criar o banco de dados, Salvar,Alterar,Excluir
registros no banco de dados.

Trabalho.java

package com.Trabalho;

import com.banco.Pessoa;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.io.FileNotFoundException;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Trabalho extends Activity {


/** Called when the activity is first created. */

public EditText telefone;


public EditText data;
public EditText nome;
public Button button;
public Intent intentPesquisar;
public Intent telaPricipal;
public Button butDeletar;
public Button butAlterar;
public Button butNovo;
private Pessoa pessoa;
private SQLiteDatabase banco = null;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
intentPesquisar = new Intent(this, Pesquisas.class);
telaPricipal = new Intent(this,trabalho.class);

setContentView(R.layout.tela);
instance = this;

telefone = (EditText) findViewById(R.id.textTelefone);


data = (EditText) findViewById(R.id.textData);
nome = (EditText) findViewById(R.id.textNome);
button = (Button) findViewById(R.id.button);
butDeletar = (Button) findViewById(R.id.buttonDeletar);
butAlterar = (Button) findViewById(R.id.buttonAlterar);
butNovo = (Button) findViewById(R.id.butNovo);

button.setOnClickListener(new Button.OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
salvarCadastro(nome.getText().toString(), telefone.getText()
.toString(), data.getText().toString());
}
});

final Button criarBanco = (Button)


findViewById(R.id.buttonCriarBd);
criarBanco.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (criarBanco()) {
showAlert("Parabens", 1, "banco de dados criado com sucesso",
"ok", true);
} else {
showAlert("ERRO", 1, "Não foi possivel criar o banco de dados ",
"ok", true);
}
}
});

final Button pesquisar = (Button)


findViewById(R.id.buttonPesquisar);
pesquisar.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startSubActivity(intentPesquisar, 0);
}
});

butDeletar.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(pessoa != null){
if(deletar(pessoa.getId())){
showAlert("Registro", 1, "Excluído com sucesso", "ok", true);
limparTela();
}else{
showAlert("ERRO", 1, "Problema ao excluir registro", "OK", true);
}
}
}});

butAlterar.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(pessoa != null)
if(alterar(pessoa.getId())){
showAlert("Alterado", 1, "Alterado com sucesso", "ok", true);
}else{
showAlert("ERRO", 1, "ERRO", "ok", true);
}
}
});

butNovo.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
limparTela();
}});
}

/**
* método responsavél por criar o banco de dados
* @return
*/

public boolean criarBanco() {


boolean aux = true;
try {
String nomeBanco = nomeBancoDeDados;
createDatabase(nomeBanco, 1, MODE_WORLD_READABLE, null); // cria
o banco de dados caso ele não exista
banco = openDatabase(nomeBanco, null); // abrir a conexão com o
banco de dados
banco.execSQL("CREATE TABLE IF NOT EXISTS lista (id INTEGER
PRIMARY KEY, nome TEXT,telefone TEXT,data TEXT);"); //SQL que
cria o banco de dados
Log.d("Sucesso", "banco de dados crado na moral");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
aux = false;
Log.d("Exception banco de dados", e.getMessage());
}
return aux;
}

/**
* Método que salva os campos no banco de dados
* @param nome
* @param telefone
* @param data
*/

public void salvarCadastro(String nome, String telefone, String


data) {
try {
banco = openDatabase(nomeBancoDeDados, null);//Abrir conexão com
o banco de dados
banco.execSQL("INSERT INTO lista(nome,telefone,data) VALUES ('"+
nome + "','" + telefone + "','" + data + "')");//Execulta o
insert no banco de dados
String[] colunas = { "nome", "telefone", "data" };
Cursor c = banco.query(true, "lista", colunas, null, null,
null,null, null);
while (c.next()) {
Log.i(String.valueOf(c.getColumnIndex("nome")),
c.getString(c.getColumnIndex("nome")));
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.d("Exception ", e.getMessage());
}
}

public void setCampos(Pessoa pessoa){


getInstance().limparTela();
getInstance().nome.setText(pessoa.getNome());
getInstance().telefone.setText(pessoa.getTelefone());
getInstance().data.setText(pessoa.getData());
this.pessoa = pessoa;
}

private void limparTela(){


nome.setText("");
telefone.setText("");
data.setText("");
}

public static String nomeBancoDeDados = "marlus";

private boolean deletar(int cod){


boolean aux = true;
try {
banco = openDatabase(nomeBancoDeDados, null);
String sql = "DELETE FROM lista WHERE id = '"+cod+"'";
banco.execSQL(sql);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
aux=false;
Log.d("Exception excluir",e.getMessage().toString());
}
return aux;
}

private boolean alterar(int cod){


boolean aux = true;
try{
banco = openDatabase(nomeBancoDeDados, null);
String sql = "UPDATE lista SET nome =
'"+nome.getText().toString()+"', telefone =
'"+telefone.getText().toString()+"', data =
'"+data.getText().toString()+"' WHERE id = '"+cod+"'";
banco.execSQL(sql);
}catch(Exception e){
aux=false;
Log.d("Excecao ",e.getMessage().toString());
}
return aux;
}

private static Trabalho instance = null;

public static Trabalho getInstance(){


return instance;
}
}

Pessoa.java

package com.banco;

public class Pessoa {


private String nome;
private String telefone;
private String data;
private int id;

public int getId() {


return id;
}
public void setId(int 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 getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
private static Pessoa instance = null;
public static Pessoa getInstance(){
if(instance == null){
instance = new Pessoa();
}
return instance;
}
}

Logo abaixo está o XML da classeTrabalho.java

tela.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/widget27"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome"
android:layout_x="20px"
android:layout_y="22px"
>
</TextView>
<EditText
android:id="@+id/textNome"
android:layout_width="198px"
android:layout_height="wrap_content"

android:textSize="18sp"
android:layout_x="90px"
android:layout_y="12px"
>
</EditText>
<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Telefone"
android:layout_x="20px"
android:layout_y="82px"
>
</TextView>
<EditText
android:id="@+id/textTelefone"
android:layout_width="197px"
android:layout_height="wrap_content"
android:phoneNumber="true"
android:textSize="18sp"
android:layout_x="90px"
android:layout_y="72px"
>
</EditText>
<TextView
android:id="@+id/widget31"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Data"
android:layout_x="20px"
android:layout_y="142px"
>
</TextView>
<EditText
android:id="@+id/textData"
android:layout_width="197px"
android:layout_height="wrap_content"

android:textSize="18sp"
android:layout_x="90px"
android:layout_y="132px"
>
</EditText>
<Button
android:id="@+id/button"
android:layout_width="82px"
android:layout_height="wrap_content"
android:text="Salvar"
android:layout_x="25px"
android:layout_y="202px"
>
</Button>
<Button
android:id="@+id/buttonCriarBd"
android:layout_width="78px"
android:layout_height="wrap_content"
android:text="CriarBD"
android:layout_x="113px"
android:layout_y="202px"
>
</Button>
<Button
android:id="@+id/buttonPesquisar"
android:layout_width="90px"
android:layout_height="wrap_content"
android:text="pesquisar"
android:layout_x="195px"
android:layout_y="202px"
>
</Button>
<Button
android:id="@+id/buttonDeletar"
android:layout_width="90px"
android:layout_height="wrap_content"
android:text="deletar"
android:layout_x="195px"
android:layout_y="260px"
>
</Button>
<Button
android:id="@+id/butNovo"
android:layout_width="82px"
android:layout_height="wrap_content"
android:text="Novo"
android:layout_x="25px"
android:layout_y="260px"
>
</Button>
<Button
android:id="@+id/buttonAlterar"
android:layout_width="78px"
android:layout_height="wrap_content"
android:text="Alterar"
android:layout_x="113px"
android:layout_y="260px"
>
</Button>
</AbsoluteLayout>

A classe Pesquisas é a classe responsavel pela consulta no banco de


dados. Segue logo abaixo o código que demostra com trabalhar com
consulta no SQLite.

Pesquisas.java

package com.trabalho;

import com.banco.Pessoa;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import android.app.Activity;
import android.app.ListActivity;
import android.app.TabActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.AdapterView.OnItemSelectedListener;

public class Pesquisas extends Activity{

ListView lista ;
EditText texto ;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.pesquisar);

lista = (ListView) findViewById(R.id.list);


texto = (EditText) findViewById(R.id.pesquisar);

texto.setOnKeyListener(new OnKeyListener(){

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(!texto.getText().toString().equals("")){//varifica se o campo
digitado é diferente de vazio
pesquisar(texto.getText().toString());//chama o método pesquisar
passando como parâmetro o campo texto
}else{
limparLista();//limpa a lista se o campo text for igual a vazio.
}
return false;
}});

lista.setOnItemSelectedListener(new OnItemSelectedListener(){

@Override
public void onItemSelected(AdapterView parent, View v, int
position,
long id) {
// TODO Auto-generated method stub
trabalho.getInstance().setCampos(vector.get(Integer.parseInt(Stri
ng.valueOf(id)))); //método que vai preencher os campos na tela
de trabalho
}

@Override
public void onNothingSelected(AdapterView parent) {
// TODO Auto-generated method stub
}});
}

/**
* Método que vai limpar a lista
*/

private void limparLista(){


vector.clear();
lista.setAdapter( new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, new ArrayList()));
}

/**
* método que vai fazer a pesquisa no banco de dados SQLite
* e retornar o resulado e adicioná-lo na lista
* @param t
*/

private void pesquisar(String t){


ArrayAdapter<String> fileList = null;
SQLiteDatabase bd = null;
vector.clear();
Pessoa pessoa = null;
try {
bd = openDatabase(trabalho.nomeBancoDeDados,null); //abre a
conexão com o banco de dados
Cursor c = bd.query(true,"lista",new String[]
{"id","nome","telefone","data"},null, null, null, null,null); //
pesquisa o campos passandos no vetor de string no banco de dados
e adiciona a o resultado da consulta no objeto Cursor
ArrayList<String> result = new ArrayList<String>();
while(c.next()){
//Prenchendo um objeto do tipo pessoa com os dados recuperados do
banco de dados
pessoa = new Pessoa();
pessoa.setNome(c.getString(c.getColumnIndex("nome")));
pessoa.setTelefone(c.getString(c.getColumnIndex("telefone")));
pessoa.setData(c.getString(c.getColumnIndex("data")));
pessoa.setId(c.getInt(c.getColumnIndex("id")));
vector.add(pessoa); // adiciona o objeto pessoa no vetor
pessoa = null;

//adiciona a visão da lista


result.add(c.getString(c.getColumnIndex("nome")) +
" - "+c.getString(c.getColumnIndex("telefone"))+" - "+
c.getString(c.getColumnIndex("data")));
}
fileList = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, result); //cria o modelo
lista.setAdapter(fileList); //intala a lista
} catch (FileNotFoundException e) {
Log.d("SQL ERRO ",e.getMessage().toString());
}finally{
bd.close(); //fecha a conexão com o banco de dados
}
}
private Vector<Pessoa> vector = new Vector<Pessoa>(); //vetor
utilizado para armazenar objetos do tipo Pessoa
}

pesquisar.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
android:id="@+id/widget27"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<TextView
android:id="@+id/widget29"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pesquisar"
>
</TextView>
<EditText
android:id="@+id/pesquisar"
android:layout_width="317px"
android:layout_height="wrap_content"
android:textSize="18sp"
>
</EditText>
<ListView
android:id="@+id/list"
android:layout_width="317px"
android:layout_height="290px"
>
</ListView>
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>


<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.trabalho">
<application android:icon="@drawable/icon">
<activity android:name=".trabalho"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Pesquisas"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Espero ter ajudado com este tutorial.

Duvidas sugestões comentários criticas ?


Você não tem permissões suficientes para ver os arquivos anexados nesta mensagem.

Editado pela última vez por Marlus Dias Silva em 14 Jul 2008, 17:21, no total de 3
vez

13 Jul 2008, 21:30

regeriob2br Re:
What is DDMS? Trabalhando
com o Banco
de Dados
SQLite no
Android.

Data de registro: 14 Jun 2008, 04:03 belo tutorial em,


Mensagens: 37
vai me ajudar a
ver o que eu
tava errando,
com o outro....

será que não dá


pra unir os dois
em um post só?

_____________
____
Rogerio
Ferreira - B2BR

Editado pela última


vez por regeriob2br
em 15 Jul 2008,
18:08, num total de
1 vezes

Você também pode gostar