SlideShare uma empresa Scribd logo
Gabriel Augusto Gomes
gabrielaugustodm@gmail.com




Armazenamento de Dados



         Android




           SANTOS

      1° Semestre de 2012
1. ARMAZENAMENTO DE DADOS
       O Android oferece várias opções para você armazenar dados de uma
aplicação. A melhor solução depende das suas necessidades específicas.
Essas necessidades variam entre segurança de dados, isto é, se os dados
devem ser privados ou acessíveis para outras aplicações ou também quanto
espaço seus dados requerem. As opções de armazenamento são:

Shared Preferences
       Armazena dados primitivos. É voltada para guardar dados de
configuração.

Internal Storage
      Armazena dados na memória interna do dispositivo, de forma privada.

External Storage
      Armazena dados na memória externa do dispositivo (Cartão SD), de
forma pública.

SQLite Databases
      Armazena dados estruturados, em um banco de dados próprio, onde
podem ser criadas estruturas mais complexas que os outros métodos, com
maior quantidade de dados.

Network Connection
     É usada para guardar dados em um servido de rede.

1. 1. Shared Preferences
    Tem como objetivo armazenar dados mais simples, salvando informações
como variáveis (booleans, floats, ints, longs e strings).
    A aplicação é bem simples, devemos restaurar os dados gravados quando
iniciar a aplicação e gravar os dados quando finalizarmos a aplicação. Segue
uma implementação:

  public class Calc extends Activity {
      public static final String PREFS_NAME = "MyPrefsFile";

        @Override
        protected void onCreate(Bundle state){
           super.onCreate(state);
           . . .

            // Restore preferences
            SharedPreferences settings = getSharedPreferences(PREFS_NAME,
  0);
            boolean silent = settings.getBoolean("silentMode", false);
            setSilent(silent);
        }

        @Override
        protected void onStop(){
           super.onStop();
// We need an Editor object to make preference changes.
            // All objects are from android.context.Context
            SharedPreferences settings = getSharedPreferences(PREFS_NAME,
  0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("silentMode", mSilentMode);

            // Commit the edits!
            editor.commit();
        }
  }



1. 2. Internal Storage
   Dessa forma, os dados são privados e não permite que sejam acessados
de qualquer maneira. Segue uma implementação simples:

  String FILENAME = "hello_file";
  String string = "hello world!";

  FileOutputStream fos = openFileOutput(FILENAME,
  Context.MODE_PRIVATE);
  fos.write(string.getBytes());
  fos.close();


        1. 2. 1. Cache
        Se você gostaria de gravar alguns dados em cache, ao invés de
armazená-lo persistentemente, você deve usar o método getCacheDir()
para abrir um arquivo que representa o diretório interno onde a sua aplicação
deve salvar os arquivos de cache temporário.
        Quando o dispositivo está com pouco espaço de armazenamento
interno, o Android pode excluir esses arquivos de cache para recuperar
espaço. No entanto, você não deve confiar no sistema para limpar esses
arquivos para você.
        Você deve sempre manter os arquivos de cache e manter dentro de um
limite razoável de espaço consumido, como 1MB. Quando o usuário desinstala
o aplicativo, esses arquivos são removidos.

        Outros métodos uteis:
        getFilesDir()
        Pega o caminho absolute do diretório onde os arquivos estão salvos.

     getDir()
     Cria (ou abre, se existir) um diretório dentro de seu espaço de
armazenamento interno.

        deleteFile()
        Deleta um arquivo salvo na memória interna.

        fileList()
        Retorna um array de arquivos salvos pela sua aplicação.
1. 3. External Storage
   Cada dispositivo suporta um "armazenamento externo" compartilhado que
você pode usar para salvar arquivos. Pode ser uma mídia de armazenamento
removível (como um cartão SD) ou a memória interna (não removível).
   Os arquivos salvos no armazenamento externo são de leitura e podem ser
modificados pelo usuário quando é ativado o armazenamento em massa USB
para transferir arquivos de um computador.

   Verificando disponibilidade de mídia
   Antes de fazer qualquer trabalho, você deve verificar se o meio está
disponível. Segue um código para fazer essa verificação:

  boolean mExternalStorageAvailable = false;
  boolean mExternalStorageWriteable = false;
  String state = Environment.getExternalStorageState();

  if (Environment.MEDIA_MOUNTED.equals(state)) {
      // We can read and write the media
      mExternalStorageAvailable = mExternalStorageWriteable = true;
  } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
      // We can only read the media
      mExternalStorageAvailable = true;
      mExternalStorageWriteable = false;
  } else {
      // Something else is wrong. It may be one of many other states,
  but all we need
      // to know is we can neither read nor write
      mExternalStorageAvailable = mExternalStorageWriteable = false;
  }


1. 4. SQLite Databases
   O método recomendado para criar um novo banco de dados SQLite é criar
uma subclasse de SQLiteOpenHelper e substituir o método onCreate(), no qual
você pode executar um comando SQLite para criar tabelas no banco de dados.
Por exemplo:
  public class DictionaryOpenHelper extends SQLiteOpenHelper {

      private static final int DATABASE_VERSION = 2;
      private static final String DICTIONARY_TABLE_NAME =
  "dictionary";
      private static final String DICTIONARY_TABLE_CREATE =
                  "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" +
                  KEY_WORD + " TEXT, " +
                  KEY_DEFINITION + " TEXT);";

      DictionaryOpenHelper(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }

      @Override
      public void onCreate(SQLiteDatabase db) {
          db.execSQL(DICTIONARY_TABLE_CREATE);
      }
  }
Os principais comandos são:


      SQLiteDatabase db;

      openOrCreateDataBase(nome, modo, fabrica);

      db.insert(tabela, nullColumnHack, valores);

      db.update(tabela, valores, where, whereArgs[]);

      Cursor c = db.query(distinct, tabela, colunas[], selecao[],
  selecaoArgs[], groupBy, orderBy);


1. 5. Network Connection
  A última forma é usando uma conexão de rede (quando disponível) para
armazenar e recuperar dados sobre seus próprios serviços na web. Para isso,
use as seguintes classes:

      import java.net.*;

      import android.net.*;
REFERENCIAS BIBLIOGRÁFICAS


Android     Developers       –     Data       Storage.    Disponível      em:<
http://developer.android.com/guide/topics/data/data-storage.html#netw> Acesso
em: 20 jun. 2012.


Henrique Lacerda – Um blog sobre desenvolvimento para Android e para
outras coisas também. Como gravar dados no Android – Parte I. Disponível
em:<http://www.henriquelacerda.com.br/2011/12/22/gravando-dados-parte-i/>
Acesso em: 20 jun. 2012.


Henrique Lacerda – Um blog sobre desenvolvimento para Android e para
outras coisas também. Como gravar dados no Android – Parte II. Disponível
em:<http://www.henriquelacerda.com.br/2012/01/03/como-gravar-dados-no-
android-parte-ii/> Acesso em: 20 jun. 2012.


Henrique Lacerda – Um blog sobre desenvolvimento para Android e para
outras coisas também. Como gravar dados no Android – Parte III – Banco de
Dados                             SQLite.                            Disponível
em:<http://www.henriquelacerda.com.br/2012/03/30/como-gravar-dados-no-
android-parte-iii-banco-de-dados-sqlite/> Acesso em: 20 jun. 2012.


LECHETA, Ricardo R. Google ANDROID: aprenda a criar aplicações para
dispositivos moveis com o Android SDK / Ricardo R. Lecheta – 2. Ed. rev. E
ampl. – São Paulo: Novatec Editora, 2010.

Mais conteúdo relacionado

Mais procurados

Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
Fundamentos de  PHP, phpMyAdmin e MySQL (parte 2)Fundamentos de  PHP, phpMyAdmin e MySQL (parte 2)
Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
Breno Vitorino
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
Marinho Brandão
 
Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g
TI Infnet
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracle
harlycarreiro
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBD
Denis Vieira
 
Integração com Banco de Dados
Integração com Banco de DadosIntegração com Banco de Dados
Integração com Banco de Dados
Denis L Presciliano
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Dalton Martins
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
Leonardo Soares
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
Diogo Biazus
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
Regis Magalhães
 
Orm android
Orm androidOrm android
Orm android
Lucas Aquiles
 
PowerShell e Active Directory
PowerShell e Active DirectoryPowerShell e Active Directory
PowerShell e Active Directory
Wellington Oliveira
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
Cezar Souza
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
Carlos Santos
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
eduardo dias
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
Bartolomeu S. Gusella
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
Daniel Brandão
 
Presentation
PresentationPresentation
Presentation
Marcondes Maçaneiro
 
JDBC
JDBCJDBC

Mais procurados (20)

Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
Fundamentos de  PHP, phpMyAdmin e MySQL (parte 2)Fundamentos de  PHP, phpMyAdmin e MySQL (parte 2)
Fundamentos de PHP, phpMyAdmin e MySQL (parte 2)
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g
 
Funcionalidades Oracle
Funcionalidades OracleFuncionalidades Oracle
Funcionalidades Oracle
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBD
 
Integração com Banco de Dados
Integração com Banco de DadosIntegração com Banco de Dados
Integração com Banco de Dados
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Orm android
Orm androidOrm android
Orm android
 
PowerShell e Active Directory
PowerShell e Active DirectoryPowerShell e Active Directory
PowerShell e Active Directory
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Presentation
PresentationPresentation
Presentation
 
JDBC
JDBCJDBC
JDBC
 

Destaque

Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dados
Luis Borges Gouveia
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Gustavo Ciello
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google Android
Caelum
 
Um exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumniUm exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumni
Luis Borges Gouveia
 
Acessando Banco de Dados com o Android
Acessando Banco de Dados com o AndroidAcessando Banco de Dados com o Android
Acessando Banco de Dados com o Android
Fernando Anselmo
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
Erisvaldo Junior
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
Marcio Palheta
 

Destaque (7)

Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dados
 
Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)Desenvolvimento para Android - Bento Gonçalves (08/2011)
Desenvolvimento para Android - Bento Gonçalves (08/2011)
 
Desenvolvimento móvel com Google Android
Desenvolvimento móvel com Google AndroidDesenvolvimento móvel com Google Android
Desenvolvimento móvel com Google Android
 
Um exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumniUm exemplo do uso do SQLite: uma base de dados para alumni
Um exemplo do uso do SQLite: uma base de dados para alumni
 
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
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 

Semelhante a Banco de Dados - Android

TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
tdc-globalcode
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
Flávio Lisboa
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)
Natanael Fonseca
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)
Ricardo Longa
 
Célio Azevedo - Apostilas de SQL atualizadas
Célio Azevedo - Apostilas de SQL atualizadasCélio Azevedo - Apostilas de SQL atualizadas
Célio Azevedo - Apostilas de SQL atualizadas
UCAM
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
Igor Moura
 
HTML5 - Web storage
HTML5 - Web storageHTML5 - Web storage
HTML5 - Web storage
Alexandre Porfírio
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
Anderson Gonçalves
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
Campus Party Brasil
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Carlos Duarte do Nascimento
 
Data Binding Android - Levi Saturnino
Data Binding  Android - Levi SaturninoData Binding  Android - Levi Saturnino
Data Binding Android - Levi Saturnino
Levi Saturnino
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
Rodrigo Rocha
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
Charles Fortes
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
rafaelbozzetti
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
rafaelbozzetti
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
Henrique Fernandes
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
Erisvaldo Junior
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
Sandro Freitas
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
Juliano Martins
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
Jeison Barros
 

Semelhante a Banco de Dados - Android (20)

TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
TDC2016POA | Trilha Banco de Dados - Firebase e Realm, o NoSQL ganha força no...
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Atividades e Intenções (Android)
Atividades e Intenções (Android)Atividades e Intenções (Android)
Atividades e Intenções (Android)
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)
 
Célio Azevedo - Apostilas de SQL atualizadas
Célio Azevedo - Apostilas de SQL atualizadasCélio Azevedo - Apostilas de SQL atualizadas
Célio Azevedo - Apostilas de SQL atualizadas
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
HTML5 - Web storage
HTML5 - Web storageHTML5 - Web storage
HTML5 - Web storage
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Data Binding Android - Levi Saturnino
Data Binding  Android - Levi SaturninoData Binding  Android - Levi Saturnino
Data Binding Android - Levi Saturnino
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
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
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (7)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

Banco de Dados - Android

  • 1. Gabriel Augusto Gomes gabrielaugustodm@gmail.com Armazenamento de Dados Android SANTOS 1° Semestre de 2012
  • 2. 1. ARMAZENAMENTO DE DADOS O Android oferece várias opções para você armazenar dados de uma aplicação. A melhor solução depende das suas necessidades específicas. Essas necessidades variam entre segurança de dados, isto é, se os dados devem ser privados ou acessíveis para outras aplicações ou também quanto espaço seus dados requerem. As opções de armazenamento são: Shared Preferences Armazena dados primitivos. É voltada para guardar dados de configuração. Internal Storage Armazena dados na memória interna do dispositivo, de forma privada. External Storage Armazena dados na memória externa do dispositivo (Cartão SD), de forma pública. SQLite Databases Armazena dados estruturados, em um banco de dados próprio, onde podem ser criadas estruturas mais complexas que os outros métodos, com maior quantidade de dados. Network Connection É usada para guardar dados em um servido de rede. 1. 1. Shared Preferences Tem como objetivo armazenar dados mais simples, salvando informações como variáveis (booleans, floats, ints, longs e strings). A aplicação é bem simples, devemos restaurar os dados gravados quando iniciar a aplicação e gravar os dados quando finalizarmos a aplicação. Segue uma implementação: public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; @Override protected void onCreate(Bundle state){ super.onCreate(state); . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop();
  • 3. // We need an Editor object to make preference changes. // All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Commit the edits! editor.commit(); } } 1. 2. Internal Storage Dessa forma, os dados são privados e não permite que sejam acessados de qualquer maneira. Segue uma implementação simples: String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close(); 1. 2. 1. Cache Se você gostaria de gravar alguns dados em cache, ao invés de armazená-lo persistentemente, você deve usar o método getCacheDir() para abrir um arquivo que representa o diretório interno onde a sua aplicação deve salvar os arquivos de cache temporário. Quando o dispositivo está com pouco espaço de armazenamento interno, o Android pode excluir esses arquivos de cache para recuperar espaço. No entanto, você não deve confiar no sistema para limpar esses arquivos para você. Você deve sempre manter os arquivos de cache e manter dentro de um limite razoável de espaço consumido, como 1MB. Quando o usuário desinstala o aplicativo, esses arquivos são removidos. Outros métodos uteis: getFilesDir() Pega o caminho absolute do diretório onde os arquivos estão salvos. getDir() Cria (ou abre, se existir) um diretório dentro de seu espaço de armazenamento interno. deleteFile() Deleta um arquivo salvo na memória interna. fileList() Retorna um array de arquivos salvos pela sua aplicação.
  • 4. 1. 3. External Storage Cada dispositivo suporta um "armazenamento externo" compartilhado que você pode usar para salvar arquivos. Pode ser uma mídia de armazenamento removível (como um cartão SD) ou a memória interna (não removível). Os arquivos salvos no armazenamento externo são de leitura e podem ser modificados pelo usuário quando é ativado o armazenamento em massa USB para transferir arquivos de um computador. Verificando disponibilidade de mídia Antes de fazer qualquer trabalho, você deve verificar se o meio está disponível. Segue um código para fazer essa verificação: boolean mExternalStorageAvailable = false; boolean mExternalStorageWriteable = false; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { // We can read and write the media mExternalStorageAvailable = mExternalStorageWriteable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { // We can only read the media mExternalStorageAvailable = true; mExternalStorageWriteable = false; } else { // Something else is wrong. It may be one of many other states, but all we need // to know is we can neither read nor write mExternalStorageAvailable = mExternalStorageWriteable = false; } 1. 4. SQLite Databases O método recomendado para criar um novo banco de dados SQLite é criar uma subclasse de SQLiteOpenHelper e substituir o método onCreate(), no qual você pode executar um comando SQLite para criar tabelas no banco de dados. Por exemplo: public class DictionaryOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 2; private static final String DICTIONARY_TABLE_NAME = "dictionary"; private static final String DICTIONARY_TABLE_CREATE = "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" + KEY_WORD + " TEXT, " + KEY_DEFINITION + " TEXT);"; DictionaryOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DICTIONARY_TABLE_CREATE); } }
  • 5. Os principais comandos são: SQLiteDatabase db; openOrCreateDataBase(nome, modo, fabrica); db.insert(tabela, nullColumnHack, valores); db.update(tabela, valores, where, whereArgs[]); Cursor c = db.query(distinct, tabela, colunas[], selecao[], selecaoArgs[], groupBy, orderBy); 1. 5. Network Connection A última forma é usando uma conexão de rede (quando disponível) para armazenar e recuperar dados sobre seus próprios serviços na web. Para isso, use as seguintes classes: import java.net.*; import android.net.*;
  • 6. REFERENCIAS BIBLIOGRÁFICAS Android Developers – Data Storage. Disponível em:< http://developer.android.com/guide/topics/data/data-storage.html#netw> Acesso em: 20 jun. 2012. Henrique Lacerda – Um blog sobre desenvolvimento para Android e para outras coisas também. Como gravar dados no Android – Parte I. Disponível em:<http://www.henriquelacerda.com.br/2011/12/22/gravando-dados-parte-i/> Acesso em: 20 jun. 2012. Henrique Lacerda – Um blog sobre desenvolvimento para Android e para outras coisas também. Como gravar dados no Android – Parte II. Disponível em:<http://www.henriquelacerda.com.br/2012/01/03/como-gravar-dados-no- android-parte-ii/> Acesso em: 20 jun. 2012. Henrique Lacerda – Um blog sobre desenvolvimento para Android e para outras coisas também. Como gravar dados no Android – Parte III – Banco de Dados SQLite. Disponível em:<http://www.henriquelacerda.com.br/2012/03/30/como-gravar-dados-no- android-parte-iii-banco-de-dados-sqlite/> Acesso em: 20 jun. 2012. LECHETA, Ricardo R. Google ANDROID: aprenda a criar aplicações para dispositivos moveis com o Android SDK / Ricardo R. Lecheta – 2. Ed. rev. E ampl. – São Paulo: Novatec Editora, 2010.