SQLite è il database naturale per applicazioni Android

11 luglio 2012

La piattaforma Android fornisce diversi metodi e strumenti per salvare i dati delle nostre applicazioni in modo persistente.  Se volessimo equipaggiare la nostra applicazione con l’attivazione/disattivazione del suono di sottofondo, oppure con la scelta della lingua da utilizzare o ancora con la possibilità di scegliere il formato della data, potremmo implementare un menu di preferenze ed utilizzare le Shared Preferences per salvare in maniera persistente le scelte dell’utente, senza doverci inventare nulla di nuovo, ma, anzi, utilizzando solamente le funzionalità messe a disposizione nativamente dalla piattaforma Android.

Le altre metodologie di memorizzazione persistente dei dati sono:

  • Internal Storage: permette di salvare dati con accesso private nella memoria del device
  • External Storage: permette di salvare i dati con accesso public in una memoria esterna condivisa (es. SD card)
  • Network Connection: permette di memorizzare i dati sul web attraverso connessioni di rete
  • Database SQLlite: permette di salvare dati strutturati in un database SQLite private

In questo articolo vedremo in dettaglio come utilizzare un database SQLite non solo per memorizzare in modo persistente i dati della nostra applicazione, ma anche per recuperarli dalla base di dati e renderli disponibili nell’applicazione stessa. Per tutti coloro che sono alle prime armi rimandiamo alla guida Android per le argomentazioni introduttive, come la configurazione dell’ambiente di sviluppo e la creazione di un progetto.

SQLite

SQLite è un leggerissimo database engine transazionale che occupa poco spazio in memoria e sul disco (da circa 4KiB a circa 350KiB, a seconda del target della piattaforma), pertanto è la tecnologia perfetta per creare e gestire database in un ambiente come quello degli applicativi mobile, dove le risorse sono molto limitate e dunque è molto importante ottimizzarne l’utilizzo.

A differenza della maggior parte degli altri database SQL, SQLite non ha un processo server separato ma legge e scrive direttamente su file ordinari sul disco: possiede praticamente tutti gli strumenti principali che caratterizzato i più importanti database SQL (tabelle, viste, indici, trigger) ed il codice è distribuito gratuitamente sia per scopi commerciali che privati.

SQLite è più diffuso di quanto ci si aspetterebbe, infatti viene utilizzato in moltissimi applicativi e device che utilizziamo quotidianamente, come l’iPhone della Apple, Mozilla Firefox, negli smartphone Symbian, in Skype, in diversi applicativi PHP o Adobe AIR, e in molti altri progetti.

Un database SQLite è, nella pratica, un file: possiamo spostarlo, copiarlo in un altro sistema (ad esempio dallo smartphone al nostro pc) e continuerà a funzionare tutto regolarmente.

SQLite e Android

Android memorizza i file seguendo uno schema preciso; il file SQLite del database di ogni applicazione viene infatti memorizzato in una directory il cui percorso è: /data/data/packagename/databases dove “packagename” è il nome del package del corrispodente applicativo.

Per visionare, modificare o cancellare i database abbiamo a disposizione due strumenti molto potenti. Il primo è utilizzare l’adb direttamente da linea di comando, mentre il secondo è utilizzare la vista File Explorer di Eclipse accessibile da Window / Show View / Other… / Android / File Explorer.

Per accedere al file del database dalla nostra app abbiamo ovviamente a disposizione gli statements SQL. Grazie alle classi che vedremo e che permettono di implementare diversi helper e adapter, Android nasconde allo sviluppatore parte del lavoro, ma per utilizzare i database è in effetti necessario avere una conoscenza almeno basilare di SQL.

Content Provider

Alcune delle componenti principali con le quali Android semplifica la vita dello sviluppatore per quanto riguarda la gestione dei database (e non solo!) sono i Content Providers.

I Content Providers offrono delle interfacce generiche per qualsiasi data source disaccoppiando il livello di memorizzazione dei dati con quello dell’applicazione.

È molto importante evidenziare fin da subito che per default l’accesso al database è permesso solo all’applicazione che lo ha creato. È principalmente per questo motivo che i Content Providers sono molto importanti: essi offrono un’interfaccia standardizzata che le nostre applicazioni possono utilizzare per condividere ed utilizzare dati provenienti da altre applicazioni, inclusi i dati gestiti dalle applicazioni native (i.e. i contatti della nostra rubrica).

Riassumento, in Android la persistenza dei dati strutturati è fornita attraverso il seguente meccanismo:

  • Database SQLite: ogni applicazione Android può creare i propri database sui quali ha il controllo completo
  • Content Provider: offrono una generica ma moto ben definita interfaccia per utilizzare e condividere i dati

Finite le presentazioni dei principali attori coinvolti, passiamo allo sviluppo.

Se vuoi aggiornamenti su SQLite è il database naturale per applicazioni Android inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su SQLite è il database naturale per applicazioni Android

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy