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

Golang 101
Golang 101Golang 101
Golang 101宇 傅
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptzand3rs
 
Analysing in depth work manager
Analysing in depth work managerAnalysing in depth work manager
Analysing in depth work managerbhatnagar.gaurav83
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Opersys inc.
 
Redux Saga - Under the hood
Redux Saga - Under the hoodRedux Saga - Under the hood
Redux Saga - Under the hoodWaqqas Jabbar
 
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...Philip Schwarz
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDDTiago Link
 
Como descrever cenários de teste utilizando Gherkin de forma correta
Como descrever cenários de teste utilizando Gherkin de forma corretaComo descrever cenários de teste utilizando Gherkin de forma correta
Como descrever cenários de teste utilizando Gherkin de forma corretaTesting Dojo Uai
 
Content Management with MongoDB by Mark Helmstetter
 Content Management with MongoDB by Mark Helmstetter Content Management with MongoDB by Mark Helmstetter
Content Management with MongoDB by Mark HelmstetterMongoDB
 
Ansible Inventory Plugins
Ansible Inventory PluginsAnsible Inventory Plugins
Ansible Inventory Pluginsjtyr
 
Aula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosAula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosPacc UAB
 
Reactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsReactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsGabor Varadi
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go langAmal Mohan N
 
GO programming language
GO programming languageGO programming language
GO programming languagetung vu
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 

Mais procurados (20)

Golang 101
Golang 101Golang 101
Golang 101
 
Object Oriented Programming in JavaScript
Object Oriented Programming in JavaScriptObject Oriented Programming in JavaScript
Object Oriented Programming in JavaScript
 
Analysing in depth work manager
Analysing in depth work managerAnalysing in depth work manager
Analysing in depth work manager
 
Intro to kotlin
Intro to kotlinIntro to kotlin
Intro to kotlin
 
Ngrx slides
Ngrx slidesNgrx slides
Ngrx slides
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
 
Redux Saga - Under the hood
Redux Saga - Under the hoodRedux Saga - Under the hood
Redux Saga - Under the hood
 
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, ...
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDD
 
Java 8 Date-Time API
Java 8 Date-Time APIJava 8 Date-Time API
Java 8 Date-Time API
 
Como descrever cenários de teste utilizando Gherkin de forma correta
Como descrever cenários de teste utilizando Gherkin de forma corretaComo descrever cenários de teste utilizando Gherkin de forma correta
Como descrever cenários de teste utilizando Gherkin de forma correta
 
Content Management with MongoDB by Mark Helmstetter
 Content Management with MongoDB by Mark Helmstetter Content Management with MongoDB by Mark Helmstetter
Content Management with MongoDB by Mark Helmstetter
 
Ansible Inventory Plugins
Ansible Inventory PluginsAnsible Inventory Plugins
Ansible Inventory Plugins
 
Classpath
ClasspathClasspath
Classpath
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Aula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosAula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercícios
 
Reactive state management with Jetpack Components
Reactive state management with Jetpack ComponentsReactive state management with Jetpack Components
Reactive state management with Jetpack Components
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
GO programming language
GO programming languageGO programming language
GO programming language
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 

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

PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...DirceuNascimento5
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLidianePaulaValezi
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxLeonardoGabriel65
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 

Último (20)

PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 

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.