
L’utilizzo di un database Sqlite in Android passa per lo più attraverso la classe SQLiteDatabase che rappresenta un’istanza della sorgente dati cui accediamo ed è ricca di metodi per l’interazione con essa.
Per svolgere delle operazioni, scrivendo meno codice esiste anche la classe DatabaseUtils. Vedremo subito alcuni strumenti inclusi al suo interno (si noti che sono tutti metodi statici da invocare pertanto senza istanziare alcun oggetto):
- longForQuery(SQLiteDatabase db, String query, String[] selectionArgs): esegue la query sull’oggetto SQLiteDatabase (eventualmente, effettuando la selezione con i parametri selectionArgs) e restituisce un unico long come risultato. Il suo tipico utilizzo è il caso in cui si svolge un’interrogazione per recuperare un solo record costituito da un singolo campo numerico come una chiave primaria o un conteggio effettuato sui dati;
- cursorRowToContentValues (Cursor cursor, ContentValues values): legge l’intero contenuto di cursor (risultato di una query) e lo trasferisce in una struttura dati ContentValues, tipicamente usata come fonte dati per le operazioni di update e di insert. Possiamo pensare a questo metodo come comodo strumento per la copia di dati da una tabella ad un’altra: come si può immaginare, i dati contenuti nell’oggetto values prodotto come risultato possono essere ulteriormente modificati prima di essere coinvolti in altre operazioni. Di questo metodo esistono molte varianti tra cui cursorStringToContentValues, cursorShortToContentValues, cursorRowToContentValues;
- dumpCursor (Cursor cursor): esegue il dump (la stampa) del cursore su System.out. Utilizzato a scopo di debug, esiste in molte varianti come dumpCursor (Cursor cursor, PrintStream stream) grazie al quale è possibile anche ridirezionare l’output su uno stream specifico.
Quelli indicati non sono altro che alcuni dei metodi che si hanno a disposizione in DatabaseUtils. La documentazione ufficiale offrirà molte notizie interessanti in merito: consultatela e suggeriteci qualche altro utile strumento che avete individuato!
No Responses to “Android e database: operazioni rapide con la classe DatabaseUtils”