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

Core Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika TutorialsCore Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika TutorialsMahika Tutorials
 
Android audio system(audio_hardwareinterace)
Android audio system(audio_hardwareinterace)Android audio system(audio_hardwareinterace)
Android audio system(audio_hardwareinterace)fefe7270
 
android content providers
android content providersandroid content providers
android content providersDeepa Rani
 
DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DaliaAboSheasha
 
Kotlin vs Java | Edureka
Kotlin vs Java | EdurekaKotlin vs Java | Edureka
Kotlin vs Java | EdurekaEdureka!
 
principles of object oriented class design
principles of object oriented class designprinciples of object oriented class design
principles of object oriented class designNeetu Mishra
 
JavaScript - Chapter 15 - Debugging Techniques
 JavaScript - Chapter 15 - Debugging Techniques JavaScript - Chapter 15 - Debugging Techniques
JavaScript - Chapter 15 - Debugging TechniquesWebStackAcademy
 
Android resource
Android resourceAndroid resource
Android resourceKrazy Koder
 
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMshamnasain
 
Polymorphism in java
Polymorphism in java Polymorphism in java
Polymorphism in java Janu Jahnavi
 

Mais procurados (20)

Java Basic Oops Concept
Java Basic Oops ConceptJava Basic Oops Concept
Java Basic Oops Concept
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
Core Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika TutorialsCore Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika Tutorials
 
Android audio system(audio_hardwareinterace)
Android audio system(audio_hardwareinterace)Android audio system(audio_hardwareinterace)
Android audio system(audio_hardwareinterace)
 
JUnit 5
JUnit 5JUnit 5
JUnit 5
 
android content providers
android content providersandroid content providers
android content providers
 
DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11DevNexus 2019: Migrating to Java 11
DevNexus 2019: Migrating to Java 11
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Kotlin vs Java | Edureka
Kotlin vs Java | EdurekaKotlin vs Java | Edureka
Kotlin vs Java | Edureka
 
principles of object oriented class design
principles of object oriented class designprinciples of object oriented class design
principles of object oriented class design
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
JavaScript - Chapter 15 - Debugging Techniques
 JavaScript - Chapter 15 - Debugging Techniques JavaScript - Chapter 15 - Debugging Techniques
JavaScript - Chapter 15 - Debugging Techniques
 
Dom
Dom Dom
Dom
 
Android resource
Android resourceAndroid resource
Android resource
 
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVMJava Virtual Machine (JVM), Difference JDK, JRE & JVM
Java Virtual Machine (JVM), Difference JDK, JRE & JVM
 
SQLite database in android
SQLite database in androidSQLite database in android
SQLite database in android
 
Android Audio System
Android Audio SystemAndroid Audio System
Android Audio System
 
JDBC
JDBCJDBC
JDBC
 
Web technologies: HTTP
Web technologies: HTTPWeb technologies: HTTP
Web technologies: HTTP
 
Polymorphism in java
Polymorphism in java Polymorphism in java
Polymorphism in java
 

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

Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfManuais Formação
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxssuserf54fa01
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 

Último (20)

Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 

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.