Salvare i dati in un database – Lezione 26 di Android

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:

  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);
    }
  }

Indice Lezione PrecedenteLezione Successiva

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *