You are on page 1of 11

TinyDB - uma soluo de dados persistente

Existem algumas alternativas diferentes para salvar informaes em App Inventor. O mais
comum e, penso eu, mais fcil de usar o TinyDB, e eu vou mostrar-lhe como faz-lo.
TinyDB uma soluo de armazenamento de dados no uma soluo de armazenamento
de arquivos. Voc pode us-lo para salvar o texto, um caminho para um arquivo, nmeros,
listas, valores booleanos, etc. Este tutorial ir mostrar-lhe como criar uma lista de contatos
usando TinyDB.
Vamos comear como sempre, com tela de design. Aqui est a lista de componentes e uma
imagem de como eu tenho a configurao da interface do usurio:

4 textboxes

2 buttons

1 checkbox

1 listpicker

1 imagepicker

1 image

4 vertical arrangements

1 horizontal arrangement

1 Notifier

1 TinyDB

Como voc pode ver na imagem do emulador, as caixas de texto so o nome da pessoa, data de nascimento,
nmero de telefone e endereo de e-mail. Ns dar ao usurio a opo de escolher se querem definir uma
imagem para a pessoa e se a pessoa um parente. Aps o seu design como voc gosta, mude para o editor
de blocos.

A primeira coisa que vamos fazer definir nossas variveis, configurao de nosso evento
Screen1.Initialize e escrever o nosso procedimento de reinicializao.
Haver apenas uma varivel necessria para este aplicativo, e isso NAMELIST, inicializado
como uma lista vazia. No caso de inicializao, vamos dizer o app para definir a varivel para
o tag TinyDB de mesmo nome, e defina o valor "se no h tag" para uma lista vazia. Esta
segunda entrada no mtodo TinyDB.GetValue novo na App Inventor 2. Ele remove a
necessidade de a / outra declarao se que era necessrio no AI Classic, como mostrado no
meu tutorial TinyDB anterior. O valor desta entrada varia de app para app: para este, ele
precisa ser uma lista vazia, uma vez que a varivel que estamos definindo necessidades para
ser uma lista; em um procedimento de alta pontuao que poderia ser definido como um
nmero para indicar que no h nenhuma pontuao salvo. Depois de se ter verificado o
TinyDB para uma lista de nomes, vamos definir os elementos ListPicker para a varivel global
para que os nomes estaro disponveis para ver cada vez que o aplicativo executado.

Agora que a parte de inicializao estiver concluda, vamos escrever o procedimento de reinicializao. Ele
precisa definir todas as caixas de texto em branco, limpar qualquer imagem que pode ser visvel, e
desmarque a caixa de seleo valor. Este procedimento ser utilizado depois de salvar algum no banco de
dados, e se pressionar o boto de reset. A chamada de procedimento tudo o que necessrio para o boto
de reset, portanto, melhor para tirar isso do caminho agora, e em seguida, defina o evento AfterPicking do
imagepicker; ele deve definir a imagem para a seleo do selecionador.

As peas fceis so feitas; agora para o trabalho pesado. Vamos enfrentar o boto salvar
seguinte. Ns precisamos primeiro verificar que qualquer que seja o nome que o usurio est
tentando salvar o banco de dados no estiver l e pop um aviso se ele . Uma vez que
sabemos o nome nico que pode salv-lo para o banco de dados. Queremos usar o nome da
pessoa que a tag para o TinyDB e salvar todas as outras entradas do aplicativo como uma
lista de valores para essa pessoa. Depois que salvar o nome para o banco de dados que pode
adicionar o nome lista de nomes, armazenar a lista de nomes para o banco de dados, bem
como, e definir os elementos ListPicker mais uma vez para a varivel lista de nomes. Depois
disso, ns redefinir o formulrio e que o usurio saiba que eles so trabalho no foi em vo: o
banco de dados foi atualizado.

A ltima pea do quebra-cabea o evento ListPicker.AfterPicking, onde queremos que o


usurio seja capaz de ver as informaes que eles tm guardado para cada pessoa na lista de
contatos. Primeiro vamos definir o nome para a seleo, e depois usamos a seleo como a

tag para o nosso mtodo TinyDB.GetValue para definir o resto dos componentes para seus
valores apropriados. No se esquea de que esses valores de ndice so especficos: a posio
que voc salvar o nmero de telefone para necessidades a serem especificados aqui; ou seja,
se o nmero de telefone a primeira coisa na lista para a pessoa que seria no ndice 1.
E isso! Test-lo. Quando voc salvar um nome para o banco de dados que permitem que
voc salv-lo novamente? Quando voc escolhe um nome da ListPicker, fazer tudo
corretamente preencher as caixas de texto com os valores definidos originalmente?
Voc pode baixar o cdigo fonte abaixo. Divirta-se!

Usando TinyWebDB - uma soluo de dados persistente baseado na web


H algumas pessoas perguntando nos fruns sobre como usar TinyWebDB, ento eu quero
ajudar. Eu no vou incomodar contando sobre como configurar o WebDB ... que a informao
est disponvel aqui. Uma vez que voc tenha obtido a configurao do servio, a ler.
Vamos comear com os componentes:

1 label

2 text boxes (one set to multiline)

1 button

1 listpicker

1 clock

1 TinyWebDB

1 Notifier

1 VerticalArrangement

1 HorizontalArrangement

Voc pode ver como eu arranjei o aplicativo na imagem esquerda, bem como os nomes
atribudos aos elementos. Uma vez que voc tenha obtido-lo a instalao como voc desejalo, abra o editor de blocos e vamos chegar a ela.
H relativamente poucos blocos para este aplicativo, e no um monte de complexidade. A
primeira coisa que precisamos fazer definir uma varivel global, listOFTags, como uma lista
vazia.

Uma vez feito isso, vamos configurar o evento clique de boto. Precisamos de um mutante se
o bloco para ter uma condio mais. Ns vamos testar se nossa lista contm o nome do

documento, txtDocName.text. Eu uso o bloco guarnio da gaveta texto para garantir que no
h nenhum espaos direita o usurio esqueceu de remover, mas isso no necessrio. Se o
nome inserido est na lista, queremos alertar o usurio e t-los escolher outra coisa para
cham-lo, por isso precisamos do Notifier.ShowMessageDialog preenchida com um alerta de
algum tipo. Ns tambm queremos limpar a caixa de texto de qualquer texto para garantir
que o usurio tem para inserir outra coisa. Para a parcela mais, uma vez que o nome inserido
no estiver na lista, que deseja adicion-lo lista, e armazen-lo como um tag no WebDB com
o valor sendo o texto de outra caixa de texto. Uma vez feito isso, precisamos armazenar outro
valor, desta vez a lista, sob a lista de etiquetas para que possamos importar todos os dados
do WebDB. Porque no h nenhuma funo GetTags para o WebDB, temos que ter uma
maneira de saber o que est guardado l para que possamos visualizar a informao mais
tarde, sem ter que ir para o site para olhar. Agora precisamos carregar a lista no ListPicker,
ative a ListPicker, e remover o texto das duas caixas de texto.
Com o WebDB, porque h um componente do Internet para ele, ele tem um evento exclusivo
que voc no vai encontrar com o TinyDB normais: ValueStored. Com este evento, podemos
deixar o usurio saber que a informao que eles enviados para o DB foi salvo, e no resultou
em um erro, por isso vamos usar o notificador para mostrar um alerta que diz simplesmente
"Banco de dados atualizado com sucesso." Vamos corrigir-se os eventos Screen1.Initialize e
lstpLoad.AfterPicking com um comando TinyWebDB.GetValue. A tag para a tela ser a mesma
que usamos para fazer upload de nossa lista para o DB: lista. Para o ListPicker, a marca ser a
seleo a partir do ListPicker, porque eles so todas as etiquetas originais no DB com o texto
digitado da outra caixa como seus valores.

Talvez voc esteja se perguntando o que o relgio para ... bem, como mostro no meu Fun
Com a pgina exemplos de clock, para ativar ou desativar o boto salvar, dependendo se h
um texto na caixa de texto docname. Voc deve certificar-se o intervalo do relgio est
definido para 50 milissegundos e, em seguida, colocar uma instruo ifelse para o evento
.Timer e verificar se o texto de docname est vazia; se for, temos de desactivar o boto, caso
contrrio, ative-o.
Agora que esses eventos simples so feitas, vamos configurar o evento TinyWebDB.GotValue.
Lembre-se que estamos recuperando um valor em caso Screen1, e esse par tag / valor uma
lista. Ento, a primeira coisa que precisa fazer verificar se a tag recebido igual lista e se
o valor dessa tag uma lista. Se ambas as condies forem verdadeiras, vamos definir a
varivel global para o valor do DB e definir os elementos do ListPicker para a varivel global.
Isso nos dar a nossa persistncia com o banco de dados. Sem essa verificao lgica, no
vamos ser capazes de ler qualquer uma das marcas gravadas no DB uma vez que o aplicativo

foi fechado. Eles se essas duas verificaes so falsas (a marca no listar e o valor no
uma lista), em seguida, so, pelo processo de eliminao, igual seleo do ListPicker e texto
associado, por isso, definir o txtDocument.Text igual para o valor e ns imprimir o contedo
da etiqueta de {} tagfromWebDB:
E estamos a fazer! Faa o download do fonte abaixo.

Como acessar o banco de dados SQLite local no seu dispositivo a partir do App Inventor
chamar um aplicativo Java
Provavelmente voc quer ler este primeiro: O que SQLite eo que um banco de dados
relacional?
J em abril 2013 Hossein apresentou o seu aprimoramento SQLite muito agradvel para o App
Inventor, que oferece acesso ao banco de dados SQLite local sobre dispositivos Android para
App Inventor aplicativos.
No entanto, como j foi dito: o pblico-alvo primrio para o App Inventor so pessoas com
pouca ou nenhuma experincia em programao. E deixe-me acrescentar algo para fazer que
um pouco mais clara: no h pblico-alvo secundrio!
O que significa, realce SQLite de Hossein em sua forma atual nunca vai faz-lo em Inventor
MIT App.
Por isso eu inventei o app ajudante SQLite, que permite que aplicativos App Inventor para
acessar o banco de dados SQLite local usando o Activity Starter. Isso ajuda a App Inventor
projetos para usar um banco de dados relacional com todas as suas vantagens (onde
clusula, por grupo, por fim, as referncias entre tabelas apenas para citar alguns), sem
necessidade de ter acesso internet!
H tambm uma funcionalidade de exportao / importao de banco de dados SQLite.
Nota: Este exemplo s funciona, se o SQLite helper app Java est instalado no seu dispositivo.

EXPORT:
Voc pode enviar o texto "Exportar" para o banco de dados eo banco de dados SQLite sero exportados
para o arquivo /sqlite/PuraVida.db no seu carto SD. Caso o diretrio no existe, ele ser criado. Caso o
arquivo j existe, ele ser substitudo.
No caso de voc estiver interessado em converter o formato de banco de dados em um arquivo de texto
ASCII, voc pode usar o Shell de linha de comando para o SQLite eo ".dump" comando. Para obter mais
informaes sobre isso, veja aqui.
H um agradvel extenso SQLite Manager disponvel para o navegador Firefox, o que torna mais fcil
para gerenciar o banco de dados. Obrigado Sonny pela informao.
IMPORT:
Voc pode enviar o texto "IMPORT" para o banco de dados eo banco de dados SQLite sero importados
do arquivo /sqlite/PuraVida.db no seu carto SD. Caso o arquivo no est l, um "arquivo no encontrado"
erro ser exibida.
Screenshots
Declaraes que no retornam linhas, o fornecimento "feito", como resultado caso isso pudesse ser

executado com sucesso (ver imagem 1). O resultado da instruo SELECT ser fornecido como tabela CSV,
que pode ser convertido facilmente em uma lista de listas (ver imagem 2). No caso de ocorrer um erro, este
ser devolvido para o App Inventor como ERROR (ver imagem 3).

App Inventor blocks

App Inventor Classic

App Inventor
Please see here for the SQL syntax.

restries
Vrgulas em colunas no so permitidos, porque as vrgulas so usadas como
delimitadores de campo nas seleccione resultados da consulta.
Apenas demonstraes individuais so permitidos (denunciado por ponto e vrgula).
No h transaes so possveis.

You might also like