SQLite è un database SQL opensource per memorizzare dati in un file testuale su un dispositivo. Android già possiede all’interno l’implementazione di database SQLite.

SQLite supporta tutte le caratteristiche dei database relazionali. Per accedere a questo database, non c’è bisogno di alcuna connessione come avviene invece in mySQL e quindi non c’è necessità di usare le opportune API ai driver: JDBC, ODBC etc.

Package

Il package che contiene le classi per gestire il database è android.database.sqlite.

Creazione del Database

Per creare un database bisogna chiamare il metodo openOrCreateDatabase con il nome del database e la modalità come parametri. In questo modo:

SQLiteDatabse mydatabase = openOrCreateDatabase("nome_database",MODE_PRIVATE,null);

Oltre a questo metodo ne esistono altri nel package dei database, che fanno la medesima cosa. Eccone alcune:

  • openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler): Questo metodo apre solamente il database. I possibili flag possono essere OPEN_READWRITE o OPEN_READONLY.
  • openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags): Simile al metodo visto sopra, ma senza alcun gestore di errori.
  • openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory): Apre il database e se non esiste lo crea. E’ equivalente al metodo openDatabase.
  • openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory): Simile al metodo sopra ma piuttosto che accettare il percorso al file come una stringa accetta un oggetto di tipo File. Equivalente al file.getPath().

Inserimento

Possiamo creare una tabella o inserire dati in una tabella usando il metodo execSQL definito nella classe SQLiteDatabase.
La sintassi è mostrata sotto:

mydatabase.execSQL("CREATE TABLE IF NOT EXISTS Table_name(Username VARCHAR,Password VARCHAR);");
mydatabase.execSQL("INSERT INTO Table_name VALUES('admin','admin');");

Queste istruzioni creano la tabella ‘Table_name’ e vi inseriscono dati all’interno. Un altro metodo che fa lo stesso lavoro con alcuni parametri addizionali è questo:

execSQL(String sql, Object[] bindArgs)
Questo metodo non solo inserisce i dati, ma attraverso l’argomento bindArgs può aggiornare dati già esistenti nel DB.

Recuperare i dati

Possiamo recuperare i dati dal database usando un oggetto della classe Cursor. Chiamiamo il metodo di questa classe rawQuery che restituisce un resultSet con il cursore che punta alla tabella. Possiamo dunque spostare il cursore in avanti e recuperare i dati.

Cursor resultSet = mydatbase.rawQuery("Select * from Table_name",null);
resultSet.moveToFirst();
String username = resultSet.getString(1);
String password = resultSet.getString(2);

Anche in questa classe Cursor sono presenti tanti altri metodi usati per recuperare i dati dal database.

I metodi visti fin’ora sono sufficienti per interagire con un database SQLite. L’interazione è rapida ed efficente e nativamente supportata praticamente da ogni versione dell’SDK Android.