SlideShare uma empresa Scribd logo
1 de 33
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

Asp.Net Identity
Asp.Net IdentityAsp.Net Identity
Asp.Net IdentityMarwa Ahmad
 
Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo httpCarlos Veiga
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIhabib_786
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariSurekha Gadkari
 
Data Persistence in Android with Room Library
Data Persistence in Android with Room LibraryData Persistence in Android with Room Library
Data Persistence in Android with Room LibraryReinvently
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnetRick van den Bosch
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in phpLeonardo Proietti
 
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...Edureka!
 
android sqlite
android sqliteandroid sqlite
android sqliteDeepa Rani
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)elliando dias
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 

Mais procurados (20)

Asp.Net Identity
Asp.Net IdentityAsp.Net Identity
Asp.Net Identity
 
Aula03 - protocolo http
Aula03 -  protocolo httpAula03 -  protocolo http
Aula03 - protocolo http
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Seletores css
Seletores cssSeletores css
Seletores css
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha Gadkari
 
Data Persistence in Android with Room Library
Data Persistence in Android with Room LibraryData Persistence in Android with Room Library
Data Persistence in Android with Room Library
 
.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet.Net Core - not your daddy's dotnet
.Net Core - not your daddy's dotnet
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Clean architecture with ddd layering in php
Clean architecture with ddd layering in phpClean architecture with ddd layering in php
Clean architecture with ddd layering in php
 
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...
Angular 4 Data Binding | Two Way Data Binding in Angular 4 | Angular 4 Tutori...
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
SQLite database in android
SQLite database in androidSQLite database in android
SQLite database in android
 
android sqlite
android sqliteandroid sqlite
android sqlite
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Android Services
Android ServicesAndroid Services
Android Services
 
OOP V3.1
OOP V3.1OOP V3.1
OOP V3.1
 
Android Thread
Android ThreadAndroid Thread
Android Thread
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 

Destaque

Android Banco de Dados
Android Banco de DadosAndroid Banco de Dados
Android Banco de DadosAlex Braz
 
Google Cloud Messaging for Android
Google Cloud Messaging for AndroidGoogle Cloud Messaging for Android
Google Cloud Messaging for Androidedilsonmendes
 
Aula07 android conectividade
Aula07 android conectividadeAula07 android conectividade
Aula07 android conectividadeRoberson Alves
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury 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 AndroidFlavio Mendes
 
Google Android - WTJatai
Google Android - WTJataiGoogle Android - WTJatai
Google Android - WTJataiCaelum
 
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 AndroidJosé 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 AndroidFernando 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 androidLucas Aquiles
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceRicardo 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 androidAlexandre 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 iPhoneHenrique Perticarati
 

Destaque (15)

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
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento 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 5Erisvaldo Junior
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo 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 6Erisvaldo Junior
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
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 pdoJorge Luís Gregório
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptxacsme
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
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/ISISDomingos Teruel
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael 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 DoctrineOtávio Calaça Xavier
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo 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çãoRoberson Alves
 
Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Apressentação SBIAGRO 2015
Apressentação SBIAGRO 2015Roberson Alves
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connectionRoberson Alves
 
eduAula08 phonegap arquivos
eduAula08 phonegap arquivoseduAula08 phonegap arquivos
eduAula08 phonegap arquivosRoberson Alves
 
Aula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosAula07 phonegap bussola_eventos
Aula07 phonegap bussola_eventosRoberson Alves
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroRoberson Alves
 
Aula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosAula05 phonegap cadastro_contatos
Aula05 phonegap cadastro_contatosRoberson Alves
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentesRoberson Alves
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapRoberson Alves
 
la 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapla 02Aula02 introdução phone_gap
la 02Aula02 introdução phone_gapRoberson Alves
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursosRoberson Alves
 
Aula06 android localizacao
Aula06 android localizacaoAula06 android localizacao
Aula06 android localizacaoRoberson Alves
 
Aula04 android intents
Aula04 android intentsAula04 android intents
Aula04 android intentsRoberson Alves
 
Aula03 android layouts_views
Aula03 android layouts_viewsAula03 android layouts_views
Aula03 android layouts_viewsRoberson Alves
 
Aula02 android hands_on
Aula02 android hands_onAula02 android hands_on
Aula02 android hands_onRoberson Alves
 
Aula01 mobilidade android
Aula01 mobilidade androidAula01 mobilidade android
Aula01 mobilidade androidRoberson 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

Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?MrciaRocha48
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira partecoletivoddois
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundonialb
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...Martin M Flynn
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoSilvaDias3
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbyasminlarissa371
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdfDemetrio Ccesa Rayme
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamentalgeone480617
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasRicardo Diniz campos
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESpatriciasofiacunha18
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosAntnyoAllysson
 

Último (20)

Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Dança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parteDança Contemporânea na arte da dança primeira parte
Dança Contemporânea na arte da dança primeira parte
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
geografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundogeografia 7 ano - relevo, altitude, topos do mundo
geografia 7 ano - relevo, altitude, topos do mundo
 
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
DIGNITAS INFINITA - DIGNIDADE HUMANA -Declaração do Dicastério para a Doutrin...
 
PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basico
 
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
v19n2s3a25.pdfgcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
Geometria  5to Educacion Primaria EDU  Ccesa007.pdfGeometria  5to Educacion Primaria EDU  Ccesa007.pdf
Geometria 5to Educacion Primaria EDU Ccesa007.pdf
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
Mesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecasMesoamérica.Astecas,inca,maias , olmecas
Mesoamérica.Astecas,inca,maias , olmecas
 
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕESPRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
PRÉ-MODERNISMO - GUERRA DE CANUDOS E OS SERTÕES
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
Bingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteirosBingo da potenciação e radiciação de números inteiros
Bingo da potenciação e radiciação de números inteiros
 

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.