AndroidProgrammazione

SQLite: database interno

Se dobbiamo gestire informazioni più complesse la gestione di un file non è adatta, abbiamo bisogno di un motore di database che ci permette l’inserimento, la ricerca, la modifica e la cancellazione di un record in modo semplice e veloce.

Android ci offre la possibilità di gestire un database relazionale tramite una libreria di funzioni, per comunicare con il database vengono utilizzate delle query  con il noto linguaggio SQL. Per eventuali informazioni sul linguaggio SQL e le query di interrogazione vedi il capitolo MySql – query di interrogazione.

In questa guida tratteremo la gestione di un database interno quindi accessibile e visibile solo dall’applicazione, in un altro capitolo affronteremo i problemi nella gestione di un database presente su un server-web.

Per prima cosa dobbiamo creare una class, estesione della class SQLiteOpenHelper, che gestisce la creazione e l’aggiornamento del database.  Ecco un esempio

Il metodo onCreate viene invocato solo la prima volta, quando non viene trovata la tabella, per creare la tabella. Invece il metodo onUpgrade serve se si richiede una versione aggiornata del database.

Se vogliamo leggere un record della tabella utilizziamo il metodo rawQuery, mentre moveToFirst posiziona il cursore nel primo elemento (che può anche essere l’unico vedi l’esempio dove vengono selezionati tutti i record che hanno il campo “id” uguale a quello indicato. La tabella in questo caso viene aperta in lettura tramite il metodo getReadableDataBase.

Per quanto riguarda l’inserimento di un record usiamo il metodo insert, in questo caso la tabella viene aperta in scrittura con il metodo getWritableDatabase.

In modo simile possiamo aggiornare un record della tabella, ma in questo caso usiamo il metodo update.

Per ultimo la cancellazione di un record tramite il metodo delete.

Possiamo non utilizzare questi metodi e “scrivere” le query utilizzando i metodi execSQL() (esegue una query) e rawQuery() (effettua una interrogazione).

Il progetto integrale si trova nella piattaforma GitHub