La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.

Presentazioni simili


Presentazione sul tema: "SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione."— Transcript della presentazione:

1 SQLite

2 Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione un vero e proprio DBMS relazionale: SQLite. SQLite è un database engine transazionale estremamente flessibile e veloce, che occupa una quantità molto ridotta di spazio su disco: tutte queste caratteristiche lo rendono perfetto per essere utilizzato in un contesto di tipo mobile. Al contrario della maggior parte dei DBMS, non possiede un processo server separato, ma legge e scrive le informazioni direttamente su file. Difatti un database SQLite non è altro che un file, pertanto può essere copiato o spostato in un altro sistema ed il tutto continuerà a funzionare regolarmente. Per permetterci di gestire al meglio i nostri db, Android ci mette a disposizione una serie di API apposite.

3 SQLiteOpenHelper Una delle classi principali messe a nostra disposizione dalla piattaforma è SQLiteOpenHelper. Estendendo tale classe, è possibile ridefinire i metodi che ci consentono di effettuare le principali operazioni per la gestione del db (creazione e aggiornamento). Tali metodi sono:

4 SQLiteDatabase La classe SQLiteDatabase rappresenta un’astrazione del db, e fornisce i metodi necessari ad effettuare le principali operazioni di gestione di un database. Generalmente, per ottenere un’istanza di tale classe, si fa riferimento a due metodi esposti dall’helper visto nella precedente slide: getReadableDatabase() e getWritableDatabase(). Tali metodi restituiscono un’istanza di tipo SQLiteDatabase, che consente l’accesso rispettivamente in lettura ed in scrittura al db. Nelle successive slide esamineremo i principali metodi esposti da tale classe.

5 ExecSQL Tale metodo consente l’esecuzione di qualsiasi comando SQL che non sia di tipo query (quindi che non preveda la restituzione di informazioni da parte del db). Prevede due overload; il primo richiede semplicemente il codice SQL da eseguire, mentre il secondo ci fornisce di passare dei parametri per l’esecuzione dei cosiddetti prepared statements. public void delete(String sql); public void delete(String sql, Object[] bindArgs);

6 Operazioni comuni Nonostante sia possibile effettuare molte operazioni utilizzando il comando ExecSQL appena descritto, la piattaforma ci offre supporto nativo per le più comuni operazioni che possono essere effettuate sulle varie tabelle. Fra questi: Delete per eliminare delle righe dalla tabella Insert per aggiungere delle nuove righe alla tabella Update per aggiornare le informazioni di una riga Query per eseguire una query generica sul db

7 Delete L’operazione che ci consente di eliminare uno o più record da una specifica tabella public int delete(String table, String whereClause, String[] whereArgs); Il primo parametro rappresenta il nome della tabella interessata, il secondo la stringa contenente la condizione, mentre l’ultimo gli eventuali parametri per effettuare il bind con la condizione specificata. Il valore di ritorno indica invece il numero di record eliminati (o -1 in caso di errore).

8 Insert Operazione che ci consente di inserire un nuovo record. public long insert(String table, String nullColumnHack, ContentValues values); Il parametro nullColumnHack rappresenta una colonna il cui valore può essere NULL. Tale colonna sarà utilizzata nel caso in cui volessimo inserire un record con tutti valori NULL oppure di default. L’istruzione “INSERT INTO NomeTabella;” non è ammessa in SQLite, l’unica alternativa è quella di utilizzare la seguente sintassi: “INSERT INTO NomeTabella(nullColumn) VALUES(NULL);” Il parametro ContentValues rappresenta semplicemente una sorta di Map che ci consente di inserire coppie chiave/valore. Il valore di ritorno contiene l’id del record appena inserito.

9 Query Si differenzia dalle operazioni precedenti in quanto permette di estrarre informazioni dal database. public Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); Distinct ci consente di indicare se vogliamo effettuare una SELECT oppure una SELECT DISTINCT. Table nome delle tabella Columns nomi delle colonne che vorremo selezionare. Selection condizioni per la select (WHERE.. AND..) SelectionArgs array di parametri per il bind. I nomi dei rimanenti parametri rendono semplice comprendere il loro scopo ai fini della query. Il valore di ritorno è un cursore che ci consentirà di ottenere i vari valori delle singole colonne.

10 Cursor Il valore di ritorno dell’operazione di query è di tipo Cursor. Un’istanza di tale classe rappresenta un cursore, cioè un oggetto in grado di iterare fra i vari record appartenenti al set di risultati restituito. Essa pertanto avrà un puntatore che farà riferimento al record corrente ed una serie di metodi che consentiranno di spostarlo e di ottenere la sua posizione attuale. Tra i più utilizzati: public int getPosition(), restituisce la posizione corrente. public boolean move(int offset), moveToNext(), moveToLast(), moveToFirst(), moveToPrevious, moveToPosition(int position), sono tutti metodi che consentono di spostare il cursore. Il valore di ritorno indica l’eventuale disponibilità di nuove informazioni. public boolean isFirst(), isLast() indica se la posizione del cursore è sul primo valore oppure sull’ultimo

11 Cursor I metodi principali sono quelli che consentono di accedere ai dati: public int getInt(int columnIndex); public double getDouble(int columnIndex); public String getString(int columnIndex); public byte[] getBlob(int columnIndex); Un metodo di utilità che restituisce l’indice della colonna di nome specificato: public int getColumnIndex(String columnName)

12 Cursor e query


Scaricare ppt "SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione."

Presentazioni simili


Annunci Google