Il sistema operativo mobile di Google consente di salvare le informazioni in un vero e proprio database di tipo SQLite su cui possono essere fatte semplici e complesse query SQL
Android offre un supporto completo ai database SQLite, ogni tabella è accessibile da qualsiasi classe dell’applicazione ma non al di fuori di esse. Ogni applicazione crea ed utilizza uno o più database in maniera esclusiva che non possono essere letti dalle altre applicazioni, in questo caso occorre utilizzare i Content Provider. Per le operazioni elementari di inserimento, aggiornamento e modifica vengono messi a disposizione dei metodi molto simili al modo di pensare SQL: l’inserimento viene effettuato con il metodo insert(); l’aggiornamento di un record con update(); mentre la cancellazione con delete().
In Android per poter effettuare un’interrogazione sul database si utilizza il metodo query() che richiede i seguenti parametri:
- table: il nome della tabella da interrogare;
- columns: la lista con i nomi delle colonne ci cui si vogliono ricevere le informazioni. Se null vengono restituite tutte le colonne della tabella;
- selection: la clausola WHERE per inserire delle condizioni sui valori da restituire. Se null vengono restituite tutte le righe della tabella;
- selectionArgs: la lista degli argomenti della clausola WHERE;
- groupBy: la clausola SQL di raggruppamento. Se null non si applica nessun raggruppamento;
- having: la clausola SQL di restrizione sul raggruppamento. Se null non si applicano restrizioni al raggruppamento;
- orderBy: la clausola SQL di raggruppamento. Se null non si applica un ordinamento specifico alla lista dei risultati restituiti.
Nel metodo query impostando tutti i valori a null, ad eccezione del nome della tabella, la query composta equivale ad ottenere tutti i dati contenuti in una tabella.
Il metodo query restituisce i dati all’interno di una struttura dati chiamata ResultSet. Si tratta di una tabella temporanea, organizzata in righe e colonne, con i risultati dell’interrogazione. Per poter leggere i dati all’interno di un ResultSet occorre un cursore che oltre a consentire di muoversi tra i valori della tabella, fornisce informazioni di carattere generale come il numero di righe totali della tabella (getCount()). I metodi principali sono:
- moveToNext(): per puntare al prossimo elemento nella tabella;
- moveToFirst(): porta alla prima riga del ResultSet;
- moveToLast(): porta all’ultima riga del ResultSet;
- moveToPrevious(): si muove indietro di una riga;
- moveToPosition(int position): si muove ad una specifica riga.
Il salvataggio dei dati in u database rappresenta solo uno dei metodi per salvare i dati in Android. Ecco un esempio di come creare un database utilizzato la superclasse SQLiteOpenHelper, ecco un esempio tratto dalla documentazione ufficiale di Android:
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);
}
}
Indice | Lezione Precedente – Lezione Successiva |