Sie sind auf Seite 1von 90

Captulo 04: Persistncia com SQLite

Instrutor

Programador desde 2000 Aluno de doutorado Mestre em informtica pelo ICOMP/UFAM Especialista em aplica es !E" # FUCAPI marcio$pal%eta&gmail$com sites$google$com/site/marcio pal%eta
M.Sc. Mrcio Palheta

Agenda

MVC em Android Cria)o da camada de modelo * entidade Aluno Padr)o de Pro+eto # ,ie- .elper Padr)o de Pro+eto # /ata Access O0+ect 1/AO2 C3U/ 1Create4 3ead4 Update4 /elete2

M.Sc. Mrcio Palheta

'/(0

Model View Controller MVC


Acti'ities ()*a'a+

C!$%&!LL#&

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

5/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento

C!$%&!LL#&

C%amada de metodo12

modelo$getEstado12

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

6/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento

C!$%&!LL#&

C%amada de metodo12

modelo$getEstado12

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

9:;ite

8/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento

C!$%&!LL#&

C%amada de metodo12

E=i0ir tela modelo$getEstado12

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

9:;ite

</(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento Entrada de dados

C!$%&!LL#&

C%amada de metodo12

E=i0ir tela modelo$getEstado12

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

9:;ite

>/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento Entrada de dados

C!$%&!LL#&

C%amada de metodo12

E=i0ir tela modelo$getEstado12

modelo$atuali?arEstado12

VI#,
La-outs ().ml+

M!"#L
"A!()*a'a+ #ntidades()*a'a+
M.Sc. Mrcio Palheta

9:;ite

(/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento Entrada de dados

C!$%&!LL#&

C%amada de metodo12

E=i0ir tela modelo$getEstado12

modelo$atuali?arEstado12

VI#,
La-outs ().ml+ Aotifica)o de mudanas

M!"#L
"A!()*a'a+ #ntidades()*a'a+

9:;ite

M.Sc. Mrcio Palheta

@0/(0

Model View Controller MVC


Acti'ities ()*a'a+ E7ento Entrada de dados

C!$%&!LL#&

C%amada de metodo12

E=i0ir tela

tela$atuali?ar,isao12 modelo$getEstado12

modelo$atuali?arEstado12

VI#,
La-outs ().ml+ Aotifica)o de mudanas

M!"#L
"A!()*a'a+ #ntidades()*a'a+

9:;ite

M.Sc. Mrcio Palheta

@@/(0

Persistncia com SQLite

A tela de ;istagem da nossa App permite o cadastro do nome dos alunos e os e=i0e em uma ;ist,ieContudo4 temos alguns pro0lemas nessa a0ordagemB

Os dados s)o perdidos Cuando a App D destruEda Precisamos de outros dados para o Aluno Persistir os dados em um "ando de /ados Usar a tela de Formulrio para cadastro e altera)o de dados do Aluno
M.Sc. Mrcio Palheta

Como resposta4 poderEamosB


@2/(0

#.erccio 0/: Crie o 0a'a1ean Aluno

M.Sc. Mrcio Palheta

@'/(0

#.erccio 0/: implemente o 2ean Aluno

M.Sc. Mrcio Palheta

@5/(0

Pensando na ar3uitetura do sistema

Agora4 no mDtodo onCreate12 da nossa Acti7itF4 precisamos po7oar um o0+eto Aluno com dados da telaB

M.Sc. Mrcio Palheta

@6/(0

Pensando na ar3uitetura do sistema

Agora4 no mDtodo onCreate12 da nossa Acti7itF4 Associa campos da tela precisamos po7oar um o0+eto Aluno com A dados da telaB referGncias de controle

M.Sc. Mrcio Palheta

@8/(0

Pensando na ar3uitetura do sistema

Agora4 no mDtodo onCreate12 da nossa Acti7itF4 Associa campos da tela precisamos po7oar um o0+eto Aluno com dados da telaB A referGncias de controle
Cria)o de um o0+eto Aluno

M.Sc. Mrcio Palheta

@</(0

Pensando na ar3uitetura do sistema

Agora4 no mDtodo onCreate12 da nossa Acti7itF4 Associa campos da tela precisamos po7oar um o0+eto Aluno com dados da telaB A referGncias de controle
Cria)o de um o0+eto Aluno

Po7oar o no7o Aluno com dados 7indos da tela

M.Sc. Mrcio Palheta

@>/(0

Pensando na ar3uitetura do sistema

A comple=idade da Acti7itF aumenta4 H medida Cue no7as funcionalidades forem implementadas I uma 0oa prtica de programa)o isolarmos peCuenas responsa0ilidades em outras classes Assim4 a Acti7itF passa a reali?ar o seu tra0al%o interagindo com peCuenos especialistas Aeste cenrio4 podemos implementar o padr)o de pro+eto ,ie- .elper4 Cue define a cria)o de classes especialistas em e=trair e tratar dados das telas

M.Sc. Mrcio Palheta

@(/(0

#.erccio 04: A classe 5elper

M.Sc. Mrcio Palheta

20/(0

#.erccio 04: A classe 5elper

Ao7o pacote para guardar nossos .elpers

M.Sc. Mrcio Palheta

2@/(0

#.erccio 04: A classe 5elper


Clase .elper para o nosso formulrio

Ao7o pacote para guardar nossos .elpers

M.Sc. Mrcio Palheta

22/(0

#.erccio 04: A classe 5elper


Clase .elper para o nosso formulrio

Ao7o pacote para guardar nossos .elpers

Atri0utos Cue representam componentes de tela

M.Sc. Mrcio Palheta

2'/(0

#.erccio 04: A classe 5elper


Clase .elper para o nosso formulrio

Ao7o pacote para guardar nossos .elpers

Atri0utos Cue representam componentes de tela

Atri0uto Cue Cue arma?ena a referGncia a um Aluno

M.Sc. Mrcio Palheta

25/(0

#.erccio 04: A classe 5elper (continua67o+

MDtodo construtor Cue rece0e um FormularioActi7itF

M.Sc. Mrcio Palheta

26/(0

#.erccio 04: A classe 5elper (continua67o+ O construtor rece0e um


FormularioActi7itF

MDtodo construtor Cue rece0e um FormularioActi7itF

M.Sc. Mrcio Palheta

28/(0

#.erccio 04: A classe 5elper (continua67o+ O construtor rece0e um


Associa atri0utos do %elper a MDtodo componentes de tela construtor FormularioActi7itF

Cue rece0e um FormularioActi7itF

M.Sc. Mrcio Palheta

2</(0

#.erccio 04: A classe 5elper (continua67o+ O construtor rece0e um


Associa atri0utos do %elper a MDtodo componentes de tela construtor FormularioActi7itF

Cue rece0e um FormularioActi7itF

Cria)o do o0+eto Aluno

M.Sc. Mrcio Palheta

2>/(0

#.erccio 04: A classe 5elper

( 8inal +

M.Sc. Mrcio Palheta

2(/(0

#.erccio 04: A classe 5elper


MDtodo Cue retorna Aluno com dados 7indos da Jela

( 8inal +

M.Sc. Mrcio Palheta

'0/(0

#.erccio 04: A classe 5elper


MDtodo Cue retorna Aluno com dados 7indos da Jela

( 8inal +

9eta os atri0utos do Aluno com campos da Jela

M.Sc. Mrcio Palheta

'@/(0

#.erccio 04: A classe 5elper


MDtodo Cue retorna Aluno com dados 7indos da Jela

( 8inal +

9eta os atri0utos do Aluno com campos da Jela

3etorna uma referGncia para um o0+eto Aluno


M.Sc. Mrcio Palheta

'2/(0

9sando o 5elper

Agora Cue nossa classe Formulario.elper est pronta4 podemos utili?*la na nossa classe de controle FormularioActi7itF Para isso4 7amos criar um atri0uto Formulario.elper Criar um o0+eto .elper no mDtodo onCreate12 Utili?ar os dados do Aluno em CualCuer mDtodo Cue necessite desse o0+eto 1reuso2 Em nosso e=emplo4 usaremos o clicK do 0ot)o para e=i0ir o nome do aluno
M.Sc. Mrcio Palheta

''/(0

#.erccio 0:: 9sando o 5elper na View

M.Sc. Mrcio Palheta

'5/(0

#.erccio 0:: 9sando o 5elper na View


/efini)o do no7o atri0uto Formulario.elper

M.Sc. Mrcio Palheta

'6/(0

#.erccio 0:: 9sando o 5elper na View


/efini)o do no7o atri0uto Formulario.elper Iniciali?a)o do %elper4 passando uma referGncia para o o0+eto atual1t%is2

M.Sc. Mrcio Palheta

'8/(0

#.erccio 0:: 9sando o 5elper na View


/efini)o do no7o atri0uto Formulario.elper Iniciali?a)o do %elper4 passando uma referGncia para o o0+eto atual1t%is2

Pedindo do .elper uma referGncia a Aluno

M.Sc. Mrcio Palheta

'</(0

#.erccio 0:: 9sando o 5elper na View


/efini)o do no7o atri0uto Formulario.elper Iniciali?a)o do %elper4 passando uma referGncia para o o0+eto atual1t%is2

Pedindo do .elper uma referGncia a Aluno

Usando o no7o o0+eto Aluno

M.Sc. Mrcio Palheta

'>/(0

C;egou a ;ora da persistncia

O ,ie-.elper e=trai os dados de Aluno da tela ,amos arma?enar esses dados em um "anco de /ados O Android 7em com o 0anco relacional 9:;ite Para con7erter O0+etos La7a em 3ela es do 0anco de dados4 7amos utili?ar o padr)o de pro+eto /AO /AO 1/ata Access O0+ect2 define Cue4 para cada ta0ela do 0anco4 criamos uma classe de perssitGncia E=B para a ta0ela Aluno4 teremos uma classe Aluno/AO4 respons7el pelo C3U/ do aluno
M.Sc. Mrcio Palheta

'(/(0

#.erccio 04: Classe Aluno"A!

Crie a classe para persistir dados do AlunoB

M.Sc. Mrcio Palheta

50/(0

#.erccio 04: Classe Aluno"A!

Crie a classe para persistir dados do AlunoB

Ao7o pacote para classes de persistGncia

M.Sc. Mrcio Palheta

5@/(0

#.erccio 04: Classe Aluno"A!

Crie a classe para persistir dados do AlunoB


Classe /AO para persistir dados de Alunos

Ao7o pacote para classes de persistGncia

M.Sc. Mrcio Palheta

52/(0

#.erccio 04: Classe Aluno"A!

Crie a classe para persistir dados do AlunoB


Classe /AO para persistir dados de Alunos

Ao7o pacote para classes de persistGncia

Fil%a da classe de persistGncia 9:;iteOpen.elper

M.Sc. Mrcio Palheta

5'/(0

Mas nem tudo s7o <lores

AtD o momento da ela0ora)o deste treinamento4 n)o %a7ia um frame-orK est7el para tratar o Mapeamento O0+eto 3elacional 17ulgo MO32 em Android /ito isto4 sM nos resta fa?er o controle manual das 7ers es do nosso "anco de /ados ,amos atuali?ar nossa classe Aluno/AO para inclus)o de algumas constantes necessrias ao nosso controle de 7ers es Em seguida4 7amos comear a usar as constantes no construtor da classe Aluno/AO
M.Sc. Mrcio Palheta

55/(0

#.erccio 0=: Controle de 'ers7o do 1"

M.Sc. Mrcio Palheta

56/(0

#.erccio 0=: Controle de 'ers7o do para 1" Ao7as constantes


controle manual de 7ers)o do "/

M.Sc. Mrcio Palheta

58/(0

#.erccio 0=: Controle de 'ers7o do para 1" Ao7as constantes


controle manual de 7ers)o do "/

3egistro da JAN de log padr)o da nossa APP

M.Sc. Mrcio Palheta

5</(0

#.erccio 0=: Controle de 'ers7o do para 1" Ao7as constantes


controle manual de 7ers)o do "/

3egistro da JAN de log padr)o da nossa APP MDtodo construtor Cue rece0e apenas o Conte=to

M.Sc. Mrcio Palheta

5>/(0

#.erccio 0=: Controle de 'ers7o do para 1" Ao7as constantes


controle manual de 7ers)o do "/

3egistro da JAN de log padr)o da nossa APP MDtodo construtor Cue rece0e apenas o Conte=to C%amada ao construtor da classe pai

M.Sc. Mrcio Palheta

5(/(0

Cria67o e atuali>a67o do 1"

Uma 7e? Cue o nosso controle de 7ers)o ocorre de forma manual4 precisamos de mDtodos para criar e atuali?ar a estrutura das ta0elas do nosso "/ O mDtodo onCreate19:;ite/ata0ase data0ase2 D in7ocado sempre Cue uma ta0ela n)o e=istir na 0ase$ L o mDtodo onUpgrade19:;ite/ata0ase data0ase4 int 7ersaoAntiga4 int 7ersaoAo7a2 D c%amado Cuando precisamos atuali?ar a estrutura das ta0elas Aa nossa App4 usaremos o OnUpgrade12 para apagar e reconstruir a 0ase
M.Sc. Mrcio Palheta

60/(0

#.erccio 0?: Cria67o de ta2elas

Aa classe Aluno/AO4 crie o mDtodo onCreate12B

M.Sc. Mrcio Palheta

6@/(0

#.erccio 0?: Cria67o de ta2elas

Aa classe Aluno/AO4 crie o mDtodo onCreate12B


/efini)o do comando Cue ser e=ecutado

M.Sc. Mrcio Palheta

62/(0

#.erccio 0?: Cria67o de ta2elas

Aa classe Aluno/AO4 crie o mDtodo onCreate12B


/efini)o do comando Cue ser e=ecutado

E=ecu)o da atuali?a)o do 0anco de dados

M.Sc. Mrcio Palheta

6'/(0

#.erccio 0@: Atuali>a67o de ta2elas

Aa classe Aluno/AO4 crie o mDtodo onUpdate12B

M.Sc. Mrcio Palheta

65/(0

#.erccio 0@: Atuali>a67o de ta2elas

Aa classe Aluno/AO4 crie o mDtodo onUpdate12B

M.Sc. Mrcio Palheta

66/(0

#.erccio 0A: Aluno"A!)cadastrar(+

M.Sc. Mrcio Palheta

68/(0

#.erccio 0A: Aluno"A!)cadastrar(+

MDtodo Cue rece0e um o0+eto Aluno e sal7a seus dados no "/

M.Sc. Mrcio Palheta

6</(0

O0+eto Cue guarda os #.erccio 0A: Aluno"A!)cadastrar(+ 7alores Cue ser)o usados para sal7ar no "/

MDtodo Cue rece0e um o0+eto Aluno e sal7a seus dados no "/

M.Sc. Mrcio Palheta

6>/(0

O0+eto Cue guarda os #.erccio 0A: Aluno"A!)cadastrar(+ 7alores Cue ser)o usados para sal7ar no "/

MDtodo Cue rece0e um o0+eto Aluno e sal7a seus dados no "/ Po7oando o mapa de 7alores com Oc%a7eB7alorP

M.Sc. Mrcio Palheta

6(/(0

O0+eto Cue guarda os #.erccio 0A: Aluno"A!)cadastrar(+ 7alores Cue ser)o usados para sal7ar no "/

MDtodo Cue rece0e um o0+eto Aluno e sal7a seus dados no "/ Po7oando o mapa de 7alores com Oc%a7eB7alorP

Arma?ena os dados do Aluno no 0anco

M.Sc. Mrcio Palheta

80/(0

Atuali>a67o da 8ormularioActi'it

Agora Cue nossa camada de modelo est prepara para o cadastro do aluno4 podemos atuali?ar nossa tela de formulrioQ Ao clicK do 0ot)o de 9al7ar4 7amosB

Pedir um o0+eto Aluno do .elperQ A0rir uma cone=)o com "/4 criando Aluno/AOQ Cadastrar o no7o Aluno no "/Q e Fec%ar a cone=)o com o 0anco de dados

M.Sc. Mrcio Palheta

8@/(0

#.erccio 0B: 1ot7o sal'ar

M.Sc. Mrcio Palheta

82/(0

#.erccio 0B: 1ot7o sal'ar

M.Sc. Mrcio Palheta

8'/(0

Queremos 'er o 3ue <oi sal'o

Para 7isuali?ar os dados do 0anco de dados4 precisamos atuali?ar as camadas de 7is)o4 controle e modelo Aa camada de modelo4 7amos criar o mDtodo listar12 ,amos remo7er o EditJe=t e "utton das camadas de 7is)o e controle Aa camada de controle4 precisamos alterar o mDtodo onCreate12 da ;istaAlunosActi7itF para c%amar o mDtodo listar12 da camada de modelo e apagar os mDtodosB

on9a7eInstance9tate12 e on3estoreInstance9tate12
M.Sc. Mrcio Palheta

85/(0

#.erccio /0: mCtodo Aluno"A!)listar(+

InEcio do mDtodo para recuperar Alunos do "/

M.Sc. Mrcio Palheta

86/(0

#.erccio /0: mCtodo Aluno"A!)listar(+

InEcio do mDtodo para recuperar Alunos do "/

Instru)o 9:; para 0uscar todos os Alunos

M.Sc. Mrcio Palheta

88/(0

#.erccio /0: mCtodo Aluno"A!)listar(+

InEcio do mDtodo para recuperar Alunos do "/

Instru)o 9:; para 0uscar todos os Alunos O Android recupera os registros do 9:;ite em um Cursor

M.Sc. Mrcio Palheta

8</(0

#.erccio /0: mCtodo Aluno"A!)listar(+

InEcio do mDtodo para recuperar Alunos do "/

Instru)o 9:; para 0uscar todos os Alunos O Android recupera os registros do 9:;ite em um Cursor

,etor de parRmetros da consulta 9:;

M.Sc. Mrcio Palheta

8>/(0

#.erccio /0: <inal do mCtodo listar(+

M.Sc. Mrcio Palheta

8(/(0

#.erccio /0: <inal do mCtodo listar(+

Percorre todos os registros do Cursor

M.Sc. Mrcio Palheta

<0/(0

#.erccio /0: <inal do mCtodo listar(+


Carrega o o0+eto Aluno com campos do Cursor

Percorre todos os registros do Cursor

M.Sc. Mrcio Palheta

<@/(0

#.erccio /0: <inal do mCtodo listar(+


Carrega o o0+eto Aluno com campos do Cursor

Percorre todos os registros do Cursor

Adiciona o Aluno H cole)o de resposta

M.Sc. Mrcio Palheta

<2/(0

#.erccio /0: <inal do mCtodo listar(+


Carrega o o0+eto Aluno com campos do Cursor

Percorre todos os registros do Cursor

Adiciona o Aluno H cole)o de resposta

android$data0ase$9:;E=ception I fil%a de 3untimeE=ception

M.Sc. Mrcio Palheta

<'/(0

#.erccio /0: <inal do mCtodo listar(+


Carrega o o0+eto Aluno com campos do Cursor

Percorre todos os registros do Cursor

Adiciona o Aluno H cole)o de resposta

android$data0ase$9:;E=ception I fil%a de 3untimeE=ception

Narante o fec%amento da cone=)o com "/ M.Sc. Mrcio Palheta <5/(0

#.erccio //: Crie Aluno)toString(+

M.Sc. Mrcio Palheta

<6/(0

#.erccio /4: Atuali>a67o da %ela inicial

Altere o arCui7oB /res/laFout/listaalunoslaFout$=ml /ei=e apenas a ;ist,ie-

M.Sc. Mrcio Palheta

<8/(0

#.erccio /:: camada de controle

Ao mDtodo onCreate12 da ;istaAlunosActi7itF4 dei=e apenas a associa)o da ;ist,ie-

M.Sc. Mrcio Palheta

<</(0

#.erccio /:: camada de controle

Ao mDtodo onCreate12 da ;istaAlunosActi7itF4 dei=e apenas a associa)o da ;ist,ie,amos manter a associa)o entre 7ie- e controller

M.Sc. Mrcio Palheta

<>/(0

#.erccio /:: camada de controle

Ao mDtodo onCreate12 da ;istaAlunosActi7itF4 dei=e apenas a associa)o da ;ist,ie,amos manter a associa)o entre 7ie- e controller O cMdigo para carga da cole)o de alunos ficar em outro mDtodo

M.Sc. Mrcio Palheta

<(/(0

#.erccio /4: Mudan6a de tipos

Aossa cole)o de Alunos de7e dei=ar de ser ;istS9tringT e se tornar ;istSAlunoT Altere4 tam0Dm4 o tipo do ArraFAdapter

M.Sc. Mrcio Palheta

>0/(0

#.erccio /4: Mudan6a de tipos

Aossa cole)o de Alunos de7e dei=ar de ser ;istS9tringT e se tornar ;istSAlunoT Altere4 tam0Dm4 o tipo do ArraFAdapter

M.Sc. Mrcio Palheta

>@/(0

#.erccio /=: carga dos dados

Aa ;istaAlunosActi7itF4 crie o mDtodo carregar;ista12 para acesso ao /AO e carga da cole)o de Alunos

M.Sc. Mrcio Palheta

>2/(0

#.erccio /=: carga dos dados

Aa ;istaAlunosActi7itF4 crie o mDtodo carregar;ista12 para Ao7o mDtodo para acesso ao /AO e carga da cole)o de Alunos carga da cole)o
de alunos

M.Sc. Mrcio Palheta

>'/(0

#.erccio /=: carga dos dados

Aa ;istaAlunosActi7itF4 crie o mDtodo carregar;ista12 para Ao7o mDtodo para acesso ao /AO e carga da cole)o de Alunos carga da cole)o
de alunos

Acesso H camada de modelo

M.Sc. Mrcio Palheta

>5/(0

#.erccio /=: carga dos dados

Aa ;istaAlunosActi7itF4 crie o mDtodo carregar;ista12 para Ao7o mDtodo para acesso ao /AO e carga da cole)o de Alunos carga da cole)o
de alunos

Acesso H camada de modelo

Atuali?a)o da tela

M.Sc. Mrcio Palheta

>6/(0

#.erccio /?: Carga no on&esume(+

Aa classe ;istaAlunosActi7itF4 7amos cria o mDtodo on3esume12 Aesse mDtodo4 7amos fa?er a c%amada a carregar;ista12

M.Sc. Mrcio Palheta

>8/(0

#.ecute a nossa App

M.Sc. Mrcio Palheta

></(0

! 3ue 'em a seguirD

Complemento do cadastro * e=clus)o 1Conte=tMenu2 Compartil%ar informa es entre Acti7ities # Intents Intent implicita # C%amada telefUnica para um aluno En7io e 3ece0imento de 9M9 Aa7egar em site do Aluno e En7io de email CRmera e arCui7os ;aFoutInflater 9er7ios de 0acKground Integra)o 7ia L9OA
M.Sc. Mrcio Palheta

>>/(0

&e<erncias

---$caelum$com$0r d$android$com ;EC.EJA4 3icardo$ Noogle Android4 'a edi)o4 Ao7atec4 9)o Paulo4 20@' CMdigo fonte completoB %ttpsB//git%u0$com/marciopal%eta/cursosandroid

M.Sc. Mrcio Palheta

>(/(0

Captulo 04: Persistncia com SQLite

Das könnte Ihnen auch gefallen