Vous êtes sur la page 1sur 17

Neste tutorial ser abordado, como gravar e recuperar dados persistentes utilizando o banco de dados SQLite em Android.

A classe Activity contm mtodos para manipular o banco SQLite, o mtodo createDatabase um que permite criar um banco de dados em android.

Outro mtodo importante, quando est se manuseando dados o mtodo openDatabase, este mtodo permite abrir um banco de dados para que possa trabalha-lo com ele.

A classe SQLiteDatabase, contm mtodos que permitem manusear instrues de banco de dados. O mtodo execSQL permite passar como parmetro uma string SQL, pode inserir dados, criar tabela, alterar dados, e deletar dados.

O mtodo query da Classe SQLiteDatabase, possibilita realizar uma consulta no banco de dados, retornando os registros contidos no banco de dados, a filtragem determinada nos parmetro que so passados.

A classe Cursor contm vrios mtodos que possibilita a manipulao dos dados retornados pelo mtodo query da classe SQLiteDatabase.

Mtodos da classe Cursor

next um boolean, retorna true se existir um novo registro. getColumnIndex mtodo retorna um inteiro que indica qual o index da coluna passada como parmetro. getString retorna uma o campo pesquisado em formato de String, pede como parmetro o index da coluna. getInt retorna como Inteiro, o campo pesquisado, solicita como parmetro o index da coluna. getDouble retorna um valor double, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getFloat retorna um valor float, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getLong retorna um valor long, que tenha sido retornado na consulta, solicita como parmetro o index da coluna.

Logo abaixo vou adicionar um cdigo onde possvel 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, "No 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, "Excludo 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(); }}); }

/** * mtodo responsavl 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 no exista banco = openDatabase(nomeBanco, null); // abrir a conexo 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; }

/** * Mtodo 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 conexo com o banco de dados banco.execSQL("INSERT INTO lista(nome,telefo ne,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 cdigo 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 vaz io pesquisar(texto.getText().toString());//chama o mtodo pesquisar passando como parmetro 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(Strin g.valueOf(id)))); //mtodo que vai preencher os campos na tela de trabalho }

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

/** * Mtodo 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())); }

/** * mtodo 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 conexo 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 viso 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 conexo 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>

V c

13 Jul 2008, 21:30

regeriob2br
What is DDM ?

ata e registro: 14 Jun 2008, 04:03 Mensagens: 37

belo tutorial em, vai me ajudar a ver o que eu tava errando, com o outro....

ser que no d pra unir os dois em um post s ?

_____________ ____ Rogerio erreira - B2BR

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

D C B

89

87 6

Editado pela ltima vez por Marlu

5 "4) " ) ! " 3) 2")  0%'1$)  $" 0 )$)# " !" % % ' "& % $"# " !    (

m ss

ss

as



 

ss

sc m

 
sc c s?
s s s s m s m lva em 14 Jul 2008, 17:21, no total de 3 vez

Es

c m s

 7

Re: Trabalhan o com o Banco e ados QLite no Android.

Vous aimerez peut-être aussi