SlideShare uma empresa Scribd logo
PERSISTÊNCIA DE DADOS 
NO ANDROID 
“Muitas vezes, as pessoas 
não sabem o que elas 
querem até que você 
mostre a elas.” (Steve Jobs)
CONTEÚDO 
•Internal Storage 
•Shared Preferences 
•SQLite Databases
PERSISTÊNCIA DE DADOS 
• Existem 3 formas principais de armazenar dados 
no dispositivo 
– Arquivos comuns (formato texto ou binário) 
• Classes FileInputStream e FileOutputStream 
• Armazenados em /data/data/<pacote>/files 
– Arquivos de preferências 
• Classe SharedPreferences 
– Bancos de Dados usando SQLite 
• Classes SQLiteDatabase, SQLiteOpenHelper 
• Armazenados em /data/data/<pacote>/databases
CLASSE ANDROID.OS.ENVIRONMENT 
MÉTODO FUNÇÃO 
static File getDataDirectory() Retorna o diretório de dados do Android. 
static File 
getDownloadCacheDirectory() 
Retorna o diretório onde o Android salva os downloads e cache. 
static File 
getExternalStorageDirectory() 
Retorna o diretório de armazenamento externo (p.ex. cartão de 
memória) 
static File 
getExternalStoragePublicDirect 
ory(tipo) 
Retorna o diretório público de armazenamento externo para um tipo de 
arquivo. Tipo pode ser: DIRECTORY_DCIM, DIRECTORY_DOWNLOADS, 
DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc. 
static String 
getExternalStorageState() 
Retorna o estado do dispositivo de armazenamento externo principal. 
Retorno pode ser: 
MEDIA_MOUNTED (disponível para uso leitura e escrita), 
MEDIA_MOUNTED_READ_ONLY (disponível apenas para leitura), 
MEDIA_REMOVED (dispositivo não presente), MEDIA_SHARED 
(dispositivo presente, não montado e compartilhado via USB). Outros: 
MEDIA_UNMOUNTABLE, MEDIA_UNMOUNTED, 
MEDIA_BAD_REMOVAL, MEDIA_CHECKING 
static boolean 
isExternalStorageRemovable() 
Se o dispositivo externo de armazenamento é removível ou não.
ARQUIVOS COMUNS 
• Métodos da classe Context 
FileInputStream 
openFileInput(String name) 
Abre um arquivo privado associado a aplicação para leitura. Argumento 
name não pode conter ‘/’. 
FileOutputStream 
openFileOutput(String name, 
int mode) 
Abre um arquivo privado associado a aplicação para escrita. Argumento 
mode pode ser Context.MODE_PRIVATE ou Context.MODE_APPEND. 
– FileInputStream: contém métodos para ler bytes 
– FileOutputStream: contém métodos para escrever bytes 
– InputStreamReader: pode ser construído a partir de um 
FileInputStream e contém métodos para ler caracteres 
– OutputStreamWriter: pode ser construído a partir de um 
FileOuputStream e contém métodos para escrever 
caracteres
ARQUIVOS COMUNS 
• Exemplo
ARQUIVOS COMUNS – LOCALIZAÇÃO 
• Exemplo
ANDROID.CONTENT.SHAREDPREFERENCES 
• Classe para armazenar preferências ou configurações da 
aplicação 
• É possível usar quantas quiser, desde que associadas a um 
nome de arquivo 
• Guarda informações na forma de pares: chave-valor 
• Para obter a instância desta classe associada ao nome de 
arquivo “preferencias”: 
SharedPreferences pref = 
Context.getSharedPreferences(“preferencias”, 0); 
• Se o arquivo ainda não existir será criado 
• Para editar usar a classe SharedPreferences.Editor 
SharedPreferences.Editor editor = prefs.edit();
ANDROID.CONTENT.SHAREDPREFERENCES 
• Métodos 
boolean contains(String key) Retorna true caso a chave key exista. 
boolean getBoolean(String 
key, boolean) 
float getFloat(String key, float) 
int getInt(String key, int) 
long getLong(String key, long) 
String getString(String key, 
String) 
Retorna o valor de uma chave. 
O segundo parâmetro indica o valor default que 
deve ser retornado caso a chave não exista. 
Note que é necessário que o desenvolvedor saiba o 
tipo do dado armazenado na chave. Caso a chave 
exista mas o tipo seja diferente do especificado no 
método será lançado um ClassCastException. 
SharedPreferences.Editor Retorna um editor para as preferências que permite 
editar e salvar informações.
ANDROID.CONTENT.SHAREDPREFERENCES.E 
DITOR 
• Usada para editar as preferências 
boolean commit() Salva as preferências no objeto SharedPreferences associado e em 
disco. Operação síncrona, ou seja, só retorna após ter salvo em 
disco retornando true em caso de sucesso, ou false senão. 
void apply() Aplica os novos valores das preferências ao objeto em memória e 
retorna. O armazenamento em disco será feito de forma assíncrona, 
ou seja, não é possível saber se houve algum error durante o 
armazenamento. 
clear() Remove todos os valores de preferências do objeto. 
putBoolean(String key, 
boolean) 
putFloat(String key, float) 
putInt(String key, int) 
putLong(String key, long) 
putString(String key, String) 
Adiciona ou altera o valor de uma chave. O nome do método e o 
segundo parâmetro indicam o tipo do valor da chave. 
remove(String key) Remove a chave definida por key e consequentemente o seu valor.
ANDROID.CONTENT.SHAREDPREFERENCES 
• Exemplo
ANDROID.CONTENT.SHAREDPREFERENCES 
• Exemplo
BANCO DE DADOS - SQLITE 
• Consiste em tabelas onde dados podem 
inseridos, modificados ou excluídos 
• O Android suporta um o modelo lógico 
relacional para armazenamento de dados 
• No Android, é utilizado o SQLite para 
gerenciar as tabelas de bancos de dados 
– www.sqlite.org 
– Is a software library that implements a self-contained, serverless, zero-configuration, 
transactional SQL database engine. SQLite is the most widely 
deployed SQL database engine in the world.
BANCO DE DADOS - SQLITE 
• SQLite implementa a maior parte do 
padrão SQL-92; 
• Suporte parcial para triggers e queries 
complexas; 
• SQLITE não implementa integridade 
referencial seguindo o tradicional 
modelo de restrições com chave 
estrangeira.
BANCO DE DADOS - SQLITE 
• API do Android (executar SQL) 
– Adotado aqui pois permite criar o BD pela aplicação 
• Cliente gráfico do SQLite 
– SQLite Expert Personal (gratuito) 
• http://www.sqliteexpert.com/index.html 
• Usando SQL via linha de comando 
– Programa na pasta do SDK do Android 
• <pasta_android>android-sdk-windowstoolssqlite3.exe 
• Nos 2 últimos, após criar, é preciso mover o arquivo para a 
pasta /data/data/<pacote>/databases do emulador 
– No eclipse (com emulador aberto): 
• Window > Show view > Other... > FileExplorer
ANDROID.DATABASE.SQLITE.SQLITEOPENHELPER 
• Auxilia abertura e criação de um banco de dados 
SQLiteOpenHelper(Context, String name, 
SQLiteDatabase.CursorFactory, int version) 
Cria um objeto para auxiliar no 
gerenciamento da base de dados. 
SQLiteDatabase getReadableDatabase() Cria ou abre um banco de dados apenas 
para leitura. 
SQLiteDatabase getWritableDatabase() Cria ou abre um banco de dados para 
leitura e escrita. 
void onCreate(SQLiteDatabase db) Chamado quando o banco de dados 
precisa ser criado, ou seja, não existe. 
void onOpen(SQLiteDatabase db) Chamado quando o banco de dados é 
aberto. 
void onUpgrade(SQLiteDatabase db, int 
oldVersion, int newVersion) 
Chamado quando a versão do banco de 
dados sendo aberto é diferente da versão 
existente.
ANDROID.DATABASE.SQLITE.SQLITEDATABASE 
• Representa o banco de dados e executa operações de 
consulta, inclusão, alteração e exclusão de registros 
static SQLiteDatabase 
Abre banco de dados de acordo com os flags: 
openDatabase(String path, 
OPEN_READWRITE, OPEN_READONLY, 
CursorFactory factory, flags) 
CREATE_IF_NECESSARY, NO_LOCALIZED_COLLATORS. 
static SQLiteDatabase 
openOrCreateDatabase(String path, 
CursorFactory factory) 
static SQLiteDatabase 
openOrCreateDatabase(File file, 
CursorFactory factory) 
Abre ou cria banco de dados. 
Equivalente a usar openDatabase(…) com 
flags = CREATE_IF_NECESSARY 
boolean isOpen() Verifica se o banco de dados está aberto. 
void close() Fecha o banco de dados. 
void execSQL(String sql) Executa script SQL que não seja SELECT. Exemplo: 
CREATE TABLE, INSERT, UPDATE, etc.
ANDROID.DATABASE.SQLITE.SQLITEDATABASE 
Cursor query(String table, String[] 
columns, String selection, String[] 
selectionArgs, String groupBy, String 
having, String orderBy) 
Cursor query(table, columns, 
selection, selectionArgs, groupBy, 
having, orderBy, limit) 
Cursor query(boolean distinct, table, 
columns, selection, selectionArgs, 
groupBy, having, orderBy, String limit) 
Mostra e executa um comando SQL. 
long insert(table, null, ContentValues 
values) 
Insere um registro e retorna o id. 
int update(table, ContentValues 
values, whereClause, whereArgs) 
Altera registro(s) e retorna quantidade de 
linhas modificadas. 
int delete(table, whereClause, 
whereArgs) 
Deleta registro(s) e retorna quantidade de 
linhas modificadas.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Classe estende SQLiteOpenHelper e 
permite gerenciar SQLiteDatabase’s.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Implementação do método onCreate() 
do banco de dados. 
Implementação do método 
onUpgrade() do banco de dados.
EXEMPLO 01 – CRIANDO/CONECTANDO 
AO BANCO DE DADOS 
Recuperando uma instância do 
banco de dados para escrita.
LOCALIZAÇÃO DA BASE DE DADOS
ANDROID.CONTENT.CONTENTVALUES 
• ContentValues 
– Usado para armazenar o conteúdo de um 
registro para uma operação 
– Equivalente a um HashMap 
• put(String key, valor)
CURSORES 
• Permite diversas operações sobre um 
conjunto de dados retornados 
– Posicionamento (isFirst(), isLast(), isBeforeFirst(), 
isAfterLast()); 
– Navegação(moveToFirst(), moveToLast(), moveToNext(), 
moveToPrevious(), move(n)); 
– Extração de campos(getInt, getString, getFloat, getBlob, 
getDate, etc.); 
– Inspeção de esquema(getColumnName, 
getColumnNames, getColumnIndex, getColumnCount, 
getCount).
CURSORES 
• Cursor 
–Implementado por 
ANDROID.DATABASE.CURSOR 
–Equivalente a um ResultSet no JDBC 
–Lista de resultados de uma consulta no 
banco
EXEMPLO 02 – MANIPULAÇÃO DA BASE DE 
DADOS – CURSORES
EXEMPLO 03 – MANIPULAÇÃO DA BASE DE 
DADOS – INSERT
EXEMPLO 04 – MANIPULAÇÃO DA BASE DE 
DADOS – UPDATE
EXEMPLO 05 – MANIPULAÇÃO DA BASE DE 
DADOS – DELETE
SQLITE DATATYPES 
• Suportados na versão 3 
– NULL. The value is a NULL value. 
– INTEGER. The value is a signed integer, stored in 1, 2, 3, 
4, 6, or 8 bytes depending on the magnitude of the 
value. 
– REAL. The value is a floating point value, stored as an 8- 
byte IEEE floating point number. 
– TEXT. The value is a text string, stored using the 
database encoding (UTF-8, UTF-16BE or UTF-16LE). 
– BLOB. The value is a blob of data, stored exactly as it was 
input.
SQLITE TRASACTIONS 
• Controle transacional é desejável para 
garantir a consistência ou evitar perdas 
de dados; 
• Normalmente uma transação segue a 
premissa: “Sucesso completo ou falha 
total!”; 
• O Android/SQLite possuem suporte para 
controle transacional.
SQLITE TRASACTIONS - EXEMPLO 
Caso não seja realizado um 
setTransactionSuccessful() = 
commit, será realizado 
automaticamente um 
rollback.
REFERÊNCIAS 
• Data Storage. 2012. Disponível em: < 
http://developer.android.com/guide/topics/data/da 
ta-storage.html >. Acesso em: 20 ago. 2012. 
• LECHETA, Ricardo R. Google android: aprenda a 
criar aplicações para dispositivos móveis com o 
android SDK. 2. ed., rev. e ampl. São Paulo: Novatec, 
2010. 608 p. ISBN 9788575222447. 
• MURPHY, Mark L. Beginning android. New York, 
USA: Apress, 2009. xxii, 361 p. ISBN 
9781430224198.

Mais conteúdo relacionado

Mais procurados

Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
Marcos Thomaz
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
André Justi
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
Marcelo Yamaguti
 
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Leinylson Fontinele
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Leinylson Fontinele
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.
Eduardo Lagares
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
José Alexandre Macedo
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
Marcia Abrahim
 
Sistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - ApresentaçãoSistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - Apresentação
Leinylson Fontinele
 
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Leinylson Fontinele
 
Linux
LinuxLinux
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
Helder da Rocha
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
Karen Costa
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
Cristiano Pires Martins
 
Aula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptxAula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptx
AlexandreLisboadaSil
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
Cloves da Rocha
 
Metodologias de análise e desenvolvimento de sistemas
Metodologias de análise e desenvolvimento de sistemasMetodologias de análise e desenvolvimento de sistemas
Metodologias de análise e desenvolvimento de sistemas
Susana Oliveira
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
danielrpgj30
 

Mais procurados (20)

Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
Sistemas Multimídia - Aula 06 - Autoria (Ferramentas para Autoria de Títulos,...
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Sistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - ApresentaçãoSistemas Multimídia - Aula 01 - Apresentação
Sistemas Multimídia - Aula 01 - Apresentação
 
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados II Aula 07 - Linguagem de Consulta SQL (Comandos DDL)
 
Linux
LinuxLinux
Linux
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Aula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptxAula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptx
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Metodologias de análise e desenvolvimento de sistemas
Metodologias de análise e desenvolvimento de sistemasMetodologias de análise e desenvolvimento de sistemas
Metodologias de análise e desenvolvimento de sistemas
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 

Destaque

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de Dados
Alex Braz
 
Orm android
Orm androidOrm android
Orm android
Lucas Aquiles
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Android
edilsonmendes
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividade
Roberson Alves
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
Iury Teixeira
 
Descubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidDescubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone Android
Flavio Mendes
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJatai
Caelum
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
José Alexandre Macedo
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o Android
Fernando Anselmo
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
Lucas Aquiles
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
Ricardo Rufino
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
Alexandre Antunes
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Henrique Perticarati
 
Android ppt
Android ppt Android ppt

Destaque (14)

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de Dados
 
Orm android
Orm androidOrm android
Orm android
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Android
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividade
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
Descubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone AndroidDescubra o potencial do seu smartphone Android
Descubra o potencial do seu smartphone Android
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJatai
 
Desenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma AndroidDesenvolvimento de Aplicativos para a Plataforma Android
Desenvolvimento de Aplicativos para a Plataforma Android
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o Android
 
Desenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google androidDesenvolvimento de aplicações para a plataforma google android
Desenvolvimento de aplicações para a plataforma google android
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhoneEntenda porque seu aplicativo de Android não deve ser igual ao de iPhone
Entenda porque seu aplicativo de Android não deve ser igual ao de iPhone
 
Android ppt
Android ppt Android ppt
Android ppt
 

Semelhante a Aula05 android persistencia

Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
eduardo dias
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
Erisvaldo Junior
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
julianabdpaiva
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Jorge Luís Gregório
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
Anderson Gonçalves
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
Fernando Palma
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
acsme
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
Ricardo Guerra Freitas
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
Igor Moura
 
Ado.net.exmplos.praticos
Ado.net.exmplos.praticosAdo.net.exmplos.praticos
Ado.net.exmplos.praticos
Hélder Oliveira
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
fabio20718
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
ssuser0bad45
 
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISISDesenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
Domingos Teruel
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
Rafael Benevides
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
Otávio Calaça Xavier
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
Elifranio Alves Cruz
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
Leonardo Soares
 

Semelhante a Aula05 android persistencia (20)

Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Ado.net.exmplos.praticos
Ado.net.exmplos.praticosAdo.net.exmplos.praticos
Ado.net.exmplos.praticos
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISISDesenvolvendo Aplicativos com  Zend Framework  e banco de dados CDS/ISIS
Desenvolvendo Aplicativos com Zend Framework e banco de dados CDS/ISIS
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Abstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP DoctrineAbstração do banco de dados com PHP Doctrine
Abstração do banco de dados com PHP Doctrine
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 

Mais de Roberson Alves

Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da Dissertação
Roberson Alves
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015
Roberson Alves
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
Roberson Alves
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivos
Roberson Alves
 
Aula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosAula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventos
Roberson Alves
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometro
Roberson Alves
 
Aula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosAula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatos
Roberson Alves
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
Roberson Alves
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
Roberson Alves
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gap
Roberson Alves
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursos
Roberson Alves
 
Aula06 android localizacao
Aula06 android localizacaoAula06 android localizacao
Aula06 android localizacao
Roberson Alves
 
Aula04 android intents
Aula04 android intentsAula04 android intents
Aula04 android intents
Roberson Alves
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_views
Roberson Alves
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
Roberson Alves
 
Aula01 mobilidade android
Aula01 mobilidade androidAula01 mobilidade android
Aula01 mobilidade android
Roberson Alves
 

Mais de Roberson Alves (16)

Apresentação da Dissertação
Apresentação da DissertaçãoApresentação da Dissertação
Apresentação da Dissertação
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivos
 
Aula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosAula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventos
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometro
 
Aula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosAula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatos
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gap
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursos
 
Aula06 android localizacao
Aula06 android localizacaoAula06 android localizacao
Aula06 android localizacao
 
Aula04 android intents
Aula04 android intentsAula04 android intents
Aula04 android intents
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_views
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_on
 
Aula01 mobilidade android
Aula01 mobilidade androidAula01 mobilidade android
Aula01 mobilidade android
 

Último

A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
Falcão Brasil
 
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
AntHropológicas Visual PPGA-UFPE
 
Fotossíntese e respiração: conceitos e trocas gasosas
Fotossíntese e respiração: conceitos e trocas gasosasFotossíntese e respiração: conceitos e trocas gasosas
Fotossíntese e respiração: conceitos e trocas gasosas
MariaJooSilva58
 
Organograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdfOrganograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdf
Falcão Brasil
 
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Falcão Brasil
 
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
Sandra Pratas
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
LeideLauraCenturionL
 
Portfólio Estratégico da Marinha do Brasil (MB).pdf
Portfólio Estratégico da Marinha do Brasil (MB).pdfPortfólio Estratégico da Marinha do Brasil (MB).pdf
Portfólio Estratégico da Marinha do Brasil (MB).pdf
Falcão Brasil
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
felipescherner
 
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONALEMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
JocelynNavarroBonta
 
Uma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da TerraUma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da Terra
Luiz C. da Silva
 
Slide para aplicação da AVAL. FLUÊNCIA.pptx
Slide para aplicação  da AVAL. FLUÊNCIA.pptxSlide para aplicação  da AVAL. FLUÊNCIA.pptx
Slide para aplicação da AVAL. FLUÊNCIA.pptx
LeilaVilasboas
 
Os Setores Estratégicos da END - O Setor Cibernético.pdf
Os Setores Estratégicos da END - O Setor Cibernético.pdfOs Setores Estratégicos da END - O Setor Cibernético.pdf
Os Setores Estratégicos da END - O Setor Cibernético.pdf
Falcão Brasil
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
Sandra Pratas
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Mary Alvarenga
 
quadro de rotina semanal da coord.docx.pdf
quadro de rotina semanal da coord.docx.pdfquadro de rotina semanal da coord.docx.pdf
quadro de rotina semanal da coord.docx.pdf
marcos oliveira
 
Infografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UEInfografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UE
Centro Jacques Delors
 
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptxSlides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
LuizHenriquedeAlmeid6
 
Marinha do Brasil (MB) Politíca Naval.pdf
Marinha do Brasil (MB) Politíca Naval.pdfMarinha do Brasil (MB) Politíca Naval.pdf
Marinha do Brasil (MB) Politíca Naval.pdf
Falcão Brasil
 

Último (20)

A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdfA Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
A Atuação das Forças Armadas na Garantia da Lei e da Ordem (GLO).pdf
 
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
O processo da farinhada no Assentamento lagoa de Dentro, Zona Rural de Várzea...
 
Fotossíntese e respiração: conceitos e trocas gasosas
Fotossíntese e respiração: conceitos e trocas gasosasFotossíntese e respiração: conceitos e trocas gasosas
Fotossíntese e respiração: conceitos e trocas gasosas
 
Organograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdfOrganograma do Ministério da Defesa (MD).pdf
Organograma do Ministério da Defesa (MD).pdf
 
RECORDANDO BONS MOMENTOS! _
RECORDANDO BONS MOMENTOS!               _RECORDANDO BONS MOMENTOS!               _
RECORDANDO BONS MOMENTOS! _
 
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
Organograma do Centro Gestor e Operacional do Sistema de Proteção da Amazônia...
 
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
EBOOK_HORA DO CONTO_O MONSTRO DAS CORES_ANGELINA & MÓNICA_22_23
 
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdfHistória das ideias pedagógicas no Brasil - Demerval Saviani.pdf
História das ideias pedagógicas no Brasil - Demerval Saviani.pdf
 
Portfólio Estratégico da Marinha do Brasil (MB).pdf
Portfólio Estratégico da Marinha do Brasil (MB).pdfPortfólio Estratégico da Marinha do Brasil (MB).pdf
Portfólio Estratégico da Marinha do Brasil (MB).pdf
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
 
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONALEMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
EMOCIONES PARA TRABAJAR EN LA AREA SOCIOEMOCIONAL
 
Uma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da TerraUma Breve História da Origem, Formação e Evolução da Terra
Uma Breve História da Origem, Formação e Evolução da Terra
 
Slide para aplicação da AVAL. FLUÊNCIA.pptx
Slide para aplicação  da AVAL. FLUÊNCIA.pptxSlide para aplicação  da AVAL. FLUÊNCIA.pptx
Slide para aplicação da AVAL. FLUÊNCIA.pptx
 
Os Setores Estratégicos da END - O Setor Cibernético.pdf
Os Setores Estratégicos da END - O Setor Cibernético.pdfOs Setores Estratégicos da END - O Setor Cibernético.pdf
Os Setores Estratégicos da END - O Setor Cibernético.pdf
 
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
FILMES DE ABRIL_BECRE D. CARLOS I_2023_24
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
 
quadro de rotina semanal da coord.docx.pdf
quadro de rotina semanal da coord.docx.pdfquadro de rotina semanal da coord.docx.pdf
quadro de rotina semanal da coord.docx.pdf
 
Infografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UEInfografia | Presidência húngara do Conselho da UE
Infografia | Presidência húngara do Conselho da UE
 
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptxSlides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
Slides Lição 3, Betel, A relevância da Igreja no cumprimento de sua Missão.pptx
 
Marinha do Brasil (MB) Politíca Naval.pdf
Marinha do Brasil (MB) Politíca Naval.pdfMarinha do Brasil (MB) Politíca Naval.pdf
Marinha do Brasil (MB) Politíca Naval.pdf
 

Aula05 android persistencia

  • 1. PERSISTÊNCIA DE DADOS NO ANDROID “Muitas vezes, as pessoas não sabem o que elas querem até que você mostre a elas.” (Steve Jobs)
  • 2. CONTEÚDO •Internal Storage •Shared Preferences •SQLite Databases
  • 3. PERSISTÊNCIA DE DADOS • Existem 3 formas principais de armazenar dados no dispositivo – Arquivos comuns (formato texto ou binário) • Classes FileInputStream e FileOutputStream • Armazenados em /data/data/<pacote>/files – Arquivos de preferências • Classe SharedPreferences – Bancos de Dados usando SQLite • Classes SQLiteDatabase, SQLiteOpenHelper • Armazenados em /data/data/<pacote>/databases
  • 4. CLASSE ANDROID.OS.ENVIRONMENT MÉTODO FUNÇÃO static File getDataDirectory() Retorna o diretório de dados do Android. static File getDownloadCacheDirectory() Retorna o diretório onde o Android salva os downloads e cache. static File getExternalStorageDirectory() Retorna o diretório de armazenamento externo (p.ex. cartão de memória) static File getExternalStoragePublicDirect ory(tipo) Retorna o diretório público de armazenamento externo para um tipo de arquivo. Tipo pode ser: DIRECTORY_DCIM, DIRECTORY_DOWNLOADS, DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc. static String getExternalStorageState() Retorna o estado do dispositivo de armazenamento externo principal. Retorno pode ser: MEDIA_MOUNTED (disponível para uso leitura e escrita), MEDIA_MOUNTED_READ_ONLY (disponível apenas para leitura), MEDIA_REMOVED (dispositivo não presente), MEDIA_SHARED (dispositivo presente, não montado e compartilhado via USB). Outros: MEDIA_UNMOUNTABLE, MEDIA_UNMOUNTED, MEDIA_BAD_REMOVAL, MEDIA_CHECKING static boolean isExternalStorageRemovable() Se o dispositivo externo de armazenamento é removível ou não.
  • 5. ARQUIVOS COMUNS • Métodos da classe Context FileInputStream openFileInput(String name) Abre um arquivo privado associado a aplicação para leitura. Argumento name não pode conter ‘/’. FileOutputStream openFileOutput(String name, int mode) Abre um arquivo privado associado a aplicação para escrita. Argumento mode pode ser Context.MODE_PRIVATE ou Context.MODE_APPEND. – FileInputStream: contém métodos para ler bytes – FileOutputStream: contém métodos para escrever bytes – InputStreamReader: pode ser construído a partir de um FileInputStream e contém métodos para ler caracteres – OutputStreamWriter: pode ser construído a partir de um FileOuputStream e contém métodos para escrever caracteres
  • 7. ARQUIVOS COMUNS – LOCALIZAÇÃO • Exemplo
  • 8. ANDROID.CONTENT.SHAREDPREFERENCES • Classe para armazenar preferências ou configurações da aplicação • É possível usar quantas quiser, desde que associadas a um nome de arquivo • Guarda informações na forma de pares: chave-valor • Para obter a instância desta classe associada ao nome de arquivo “preferencias”: SharedPreferences pref = Context.getSharedPreferences(“preferencias”, 0); • Se o arquivo ainda não existir será criado • Para editar usar a classe SharedPreferences.Editor SharedPreferences.Editor editor = prefs.edit();
  • 9. ANDROID.CONTENT.SHAREDPREFERENCES • Métodos boolean contains(String key) Retorna true caso a chave key exista. boolean getBoolean(String key, boolean) float getFloat(String key, float) int getInt(String key, int) long getLong(String key, long) String getString(String key, String) Retorna o valor de uma chave. O segundo parâmetro indica o valor default que deve ser retornado caso a chave não exista. Note que é necessário que o desenvolvedor saiba o tipo do dado armazenado na chave. Caso a chave exista mas o tipo seja diferente do especificado no método será lançado um ClassCastException. SharedPreferences.Editor Retorna um editor para as preferências que permite editar e salvar informações.
  • 10. ANDROID.CONTENT.SHAREDPREFERENCES.E DITOR • Usada para editar as preferências boolean commit() Salva as preferências no objeto SharedPreferences associado e em disco. Operação síncrona, ou seja, só retorna após ter salvo em disco retornando true em caso de sucesso, ou false senão. void apply() Aplica os novos valores das preferências ao objeto em memória e retorna. O armazenamento em disco será feito de forma assíncrona, ou seja, não é possível saber se houve algum error durante o armazenamento. clear() Remove todos os valores de preferências do objeto. putBoolean(String key, boolean) putFloat(String key, float) putInt(String key, int) putLong(String key, long) putString(String key, String) Adiciona ou altera o valor de uma chave. O nome do método e o segundo parâmetro indicam o tipo do valor da chave. remove(String key) Remove a chave definida por key e consequentemente o seu valor.
  • 13. BANCO DE DADOS - SQLITE • Consiste em tabelas onde dados podem inseridos, modificados ou excluídos • O Android suporta um o modelo lógico relacional para armazenamento de dados • No Android, é utilizado o SQLite para gerenciar as tabelas de bancos de dados – www.sqlite.org – Is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world.
  • 14. BANCO DE DADOS - SQLITE • SQLite implementa a maior parte do padrão SQL-92; • Suporte parcial para triggers e queries complexas; • SQLITE não implementa integridade referencial seguindo o tradicional modelo de restrições com chave estrangeira.
  • 15. BANCO DE DADOS - SQLITE • API do Android (executar SQL) – Adotado aqui pois permite criar o BD pela aplicação • Cliente gráfico do SQLite – SQLite Expert Personal (gratuito) • http://www.sqliteexpert.com/index.html • Usando SQL via linha de comando – Programa na pasta do SDK do Android • <pasta_android>android-sdk-windowstoolssqlite3.exe • Nos 2 últimos, após criar, é preciso mover o arquivo para a pasta /data/data/<pacote>/databases do emulador – No eclipse (com emulador aberto): • Window > Show view > Other... > FileExplorer
  • 16. ANDROID.DATABASE.SQLITE.SQLITEOPENHELPER • Auxilia abertura e criação de um banco de dados SQLiteOpenHelper(Context, String name, SQLiteDatabase.CursorFactory, int version) Cria um objeto para auxiliar no gerenciamento da base de dados. SQLiteDatabase getReadableDatabase() Cria ou abre um banco de dados apenas para leitura. SQLiteDatabase getWritableDatabase() Cria ou abre um banco de dados para leitura e escrita. void onCreate(SQLiteDatabase db) Chamado quando o banco de dados precisa ser criado, ou seja, não existe. void onOpen(SQLiteDatabase db) Chamado quando o banco de dados é aberto. void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) Chamado quando a versão do banco de dados sendo aberto é diferente da versão existente.
  • 17. ANDROID.DATABASE.SQLITE.SQLITEDATABASE • Representa o banco de dados e executa operações de consulta, inclusão, alteração e exclusão de registros static SQLiteDatabase Abre banco de dados de acordo com os flags: openDatabase(String path, OPEN_READWRITE, OPEN_READONLY, CursorFactory factory, flags) CREATE_IF_NECESSARY, NO_LOCALIZED_COLLATORS. static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory) static SQLiteDatabase openOrCreateDatabase(File file, CursorFactory factory) Abre ou cria banco de dados. Equivalente a usar openDatabase(…) com flags = CREATE_IF_NECESSARY boolean isOpen() Verifica se o banco de dados está aberto. void close() Fecha o banco de dados. void execSQL(String sql) Executa script SQL que não seja SELECT. Exemplo: CREATE TABLE, INSERT, UPDATE, etc.
  • 18. ANDROID.DATABASE.SQLITE.SQLITEDATABASE Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) Cursor query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit) Cursor query(boolean distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, String limit) Mostra e executa um comando SQL. long insert(table, null, ContentValues values) Insere um registro e retorna o id. int update(table, ContentValues values, whereClause, whereArgs) Altera registro(s) e retorna quantidade de linhas modificadas. int delete(table, whereClause, whereArgs) Deleta registro(s) e retorna quantidade de linhas modificadas.
  • 19. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Classe estende SQLiteOpenHelper e permite gerenciar SQLiteDatabase’s.
  • 20. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Implementação do método onCreate() do banco de dados. Implementação do método onUpgrade() do banco de dados.
  • 21. EXEMPLO 01 – CRIANDO/CONECTANDO AO BANCO DE DADOS Recuperando uma instância do banco de dados para escrita.
  • 23. ANDROID.CONTENT.CONTENTVALUES • ContentValues – Usado para armazenar o conteúdo de um registro para uma operação – Equivalente a um HashMap • put(String key, valor)
  • 24. CURSORES • Permite diversas operações sobre um conjunto de dados retornados – Posicionamento (isFirst(), isLast(), isBeforeFirst(), isAfterLast()); – Navegação(moveToFirst(), moveToLast(), moveToNext(), moveToPrevious(), move(n)); – Extração de campos(getInt, getString, getFloat, getBlob, getDate, etc.); – Inspeção de esquema(getColumnName, getColumnNames, getColumnIndex, getColumnCount, getCount).
  • 25. CURSORES • Cursor –Implementado por ANDROID.DATABASE.CURSOR –Equivalente a um ResultSet no JDBC –Lista de resultados de uma consulta no banco
  • 26. EXEMPLO 02 – MANIPULAÇÃO DA BASE DE DADOS – CURSORES
  • 27. EXEMPLO 03 – MANIPULAÇÃO DA BASE DE DADOS – INSERT
  • 28. EXEMPLO 04 – MANIPULAÇÃO DA BASE DE DADOS – UPDATE
  • 29. EXEMPLO 05 – MANIPULAÇÃO DA BASE DE DADOS – DELETE
  • 30. SQLITE DATATYPES • Suportados na versão 3 – NULL. The value is a NULL value. – INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value. – REAL. The value is a floating point value, stored as an 8- byte IEEE floating point number. – TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE). – BLOB. The value is a blob of data, stored exactly as it was input.
  • 31. SQLITE TRASACTIONS • Controle transacional é desejável para garantir a consistência ou evitar perdas de dados; • Normalmente uma transação segue a premissa: “Sucesso completo ou falha total!”; • O Android/SQLite possuem suporte para controle transacional.
  • 32. SQLITE TRASACTIONS - EXEMPLO Caso não seja realizado um setTransactionSuccessful() = commit, será realizado automaticamente um rollback.
  • 33. REFERÊNCIAS • Data Storage. 2012. Disponível em: < http://developer.android.com/guide/topics/data/da ta-storage.html >. Acesso em: 20 ago. 2012. • LECHETA, Ricardo R. Google android: aprenda a criar aplicações para dispositivos móveis com o android SDK. 2. ed., rev. e ampl. São Paulo: Novatec, 2010. 608 p. ISBN 9788575222447. • MURPHY, Mark L. Beginning android. New York, USA: Apress, 2009. xxii, 361 p. ISBN 9781430224198.