Home

android e sqlite3

Uno dei metodi messi a disposizione da Android per salvare in modo permanente i dati di un’applicazione è usando il database SQLite. Ogni applicazione può avere il suo database privato: il database non sarà accessibile all’esterno dell’applicazione. SQLite più che un database vero e proprio è definita come una libreria che implementa “a self-contained, serverless, zero-configuration, transactional SQL database engine”.

L’effetto pratico è quello di poter disporre di database embedded. Tipicamente abbiamo a che fare con dei database server (mysql, oracle, sqlserver…), dove un client si collega al server su cui gira database. I database embedded sono qualcosa di molto più semplice: semplificando all’estremo sono un file binario a cui si accede con un apposito client o una libreria. Il client è necessario per effettuare sviluppi e debug. Mentre un database server è pensato per avere più accessi simultanei, su un db embedded accede un solo processo [mi si perdoni la semplificazione estrema della faccenda].

Android permette di creare ed utilizzare un database embedded integrato nel sistema operativo. L’SDK mette anche a disposizione un tool (sqlite3) per accere al database anche da remoto.
Negli esempi che ho trovato on-line, si lavora un po’ alla cieca. Mi piacerebbe poter fare tutte le prove e verifiche che desidero sul database prima di affidare ai miei sorgenti gli script. La cosa è possibile.

Come creare un database locale e svincolato da Android

Prima di tutto si installi sqlite3. Io utilizzo Ubuntu e trovo sqlite3 nel repository dei packages: ancora più facile.

Installato il client sqlite3, si crei una cartella e la si raggiunga con una shell.

cd ~/Desktop
mkdir sqlitetest
cd sqlitetest

Si invochi il client, digitando (sempre dalla stessa shell):

sqlite3 test.db

Questo comando aprirà il client di sqlite e creerà un file di database nella posizione corrente. A dire il vero se uscissi, non troverei ancora nulla perchè il db è vuoto!

Per uscire dal client: .quit

Creiamo una tabella:

 CREATE TABLE coffee(cid INTEGER PRIMARY KEY AUTOINCREMENT, name varchar(20));

vediamo se la tabella esiste:

.tables

una insert:

insert into coffee (name) values ('java');

una select:

select * from coffee;

Di seguito un screenshot delle operazioni descritte.

Abbastanza scomodo! Siamo abituati ad usare tools più user friendly, vero? Possiamo farlo anche con SQLite.
Si può accedere a SQLite con un driver JDBC e quindi con un programma tipo DBVisualizer o SqlWorkbench/J

Vediamo come fare con SQL Workbench/J.

Per accedere da jdbc servono 4 cose: driver, url di connessione, utente, password.
driver:
url: jdbc:xxx:[path al file db] esempio: ~/Desktop/sqlitetest/test.db
utente e password si lascino vuoti.

definizione della connessione

La struttura del database

una select sulla tabella coffee

In questo modo si possono creare tabelle e verificare che tutto funzioni, per poi riportare gli script nella nostra applicazione su Android.

La stessa cosa funziona anche da Java, nel caso si voglia usare sqlite anche per applicazioni non Android (es. Swing). In tale caso si trovano anche alternative; tempo fa utilizzai con soddisfazione HsqlDb (ora HyperSQL), che tra l’altro può funzionare anche in modalità ‘server’.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...