11th febbraio, 2009

SQLite Tutorial per iPhone grazie a Fabio Lecca e al suo software Onomastici

by Stefano Lodu

Fabio Lecca si presenta agli user di iPhone and Go con la sua prima uscita su AppStore: Onomastici. Un’applicazione che sta riscuotendo molto successo per la sua semplicità e chiarezza. Ma Fabio oltre a rilasciarci una gentile intervista ci insegnera’ con la sua esperienza come utilizzare il Database per iPhone: SQLite !.
In questo articolo cominceremo a capire grazie a Fabio cos’e’ SQLite, poi, articolo dopo articolo impareremo ad approfondire l’argomento con codici per accedere in lettura e scrittura, per recuperare dati, e per conoscere più da vicino cosa Fabio ha da raccontarci con la sua prima esperienza in Appstore.

Ecco la prima parte del tutorial scritto da Fabio:

The making of “Onomastici”

Ovvero: come utilizzare SQLite in applicazioni iPhone

di Fabio Lecca

Introduzione

Dopo il lancio dell’applicazione “Onomastici” su App Store e la buona accoglienza ricevuta, sono lieto di presentarvi un punto di vista tecnico sulle soluzioni con cui il programma è stato realizzato.

Si comincia!

Cosa c’è di meglio di un’applicazione per iPhone i cui contenuti siano sempre disponibili, indipendentemente dalla presenza di una connessione dati (EDGE, 3G o Wi-Fi)?
I possessori italiani di iPhone EDGE soffrono di “sindrome da connessione” per via dei rischi tariffari: i vantaggi di un data base locale sono evidenti per tutti, soprattutto dal punto di vista della velocità e del risparmio di batteria.
A mio parere la presenza di SQLite è un enorme punto di forza di iPhone (non a caso tale libreria è stata ripresa anche su Android).

Un altro motivo per utilizzare SQLite è .. la pigrizia! Infatti come vedremo, alcuni algoritmi di correlazione di informazioni diventano dei banali comandi SQL di join, semplificando notevolmente la logica dei programmi.

SQLite … chi era costui?!

Citando il sito www.sqlite.org:

SQLite è una libreria software che implementa un motore di database SQL autocontenuto, senza configurazione, transazionale. SQLite è il più diffuso database SQL al mondo.

Non stentiamo a credere a tale affermazione dal momento che ad esempio gestisce il database degli sms (/var/mobile/Library/SMS/sms.db) e dei contatti (/var/mobile/Library/AddressBook/AddressBook.sqlitedb) di tutti gli iPhone esistenti …

La libreria è basata sul linguaggio di programmazione C (niente oggetti Cocoa!) ma come vedremo sono sufficienti poche semplici funzioni per utilizzare a pieno tutte le caratteristiche disponibili. L’esempio di riferimento dell’iPhone SDK è presente sul sito di Apple ed è chiamato SQLiteBooks.

Creazione di un Data base

Un database SQLite può essere agevolmente creato su Mac aprendo l’applicazione “Terminal.app” e dando il comando

sqlite3 <nome database>

In generale i file di database SQLite hanno estensione “.sql” o “.sqlitedb” o “.db”.
Se il file è inesistente, viene creato ex-novo, altrimenti viene aperto. A questo punto si entra in un’interfaccia a linea di comando, nella quale si possono dare comandi SQL diretti, oppure comandi che iniziano con il carattere “.” che vengono gestiti dal motore SQLite (digitare .help per la lista completa).

Per creare le tabelle utilizziamo i comandi standard SQL, ad esempio:

Notate la presenza dei tipi di dato INTEGER e CHAR (di dimensione variabile): più avanti vedremo come sono gestiti nel codice.

Per la creazione del DB di Onomastici è stato utilizzato un file di testo codificato in UTF8 (lo standard di SQLite), contenente tutti i comandi SQL CREATE TABLE, INSERT INTO <tabella> e CREATE INDEX. Tale file viene caricato mediante il comando

.read <nomefile>

che consente di eseguire in una volta tutti i comandi presenti all’interno del file.

Un altro comando interessante è “.schema”, che permette di ricreare la struttura di un database mostrando i comandi per la realizzazione delle tabelle che lo costituiscono.

XCode

I passi necessari per l’inclusione della tecnologia di SQLite nel nostro progetto XCode sono i seguenti:

1) creare un progetto per iPhone utilizzando un template di “iPhone Application” a scelta (tranne OpenGL ES che è troppo impegnativo per questo tutorial)

2) aggiungere il file di database creato nel paragrafo precedente, trascinandolo dal Finder sotto la cartella Resources del progetto appena creato e rispondendo OK al seguente dialog:

Nota: questo file verrà incluso direttamente nel bundle della nostra applicazione, esattamente nella cartella <nomeapp>.app, dove può essere aperto solamente in lettura per via delle limitazioni della “sandbox” in cui girano le applicazioni iPhone. Vedremo come ovviare a tale limitazione.

3) Aggiungere la libreria dinamica “libsqlite3.0.dylib”, selezionando “Add to Project” dal menu “Project” e selezionando tale file dalla cartella:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib

4) Nelle classi che utilizzano SQLite, ricordarsi la import:

#import <sqlite3.h>

5) a questo punto possiamo dedicarci al codice!…. nella prossima puntata

Un ringraziamento da parte di iPhone and Go a Fabio Lecca per il suo contributo.

Sir. Lodux !.

Cresciamo insieme . Developer | Add your comment

9 Comments. Subscribe to this post comments or trackback.

  1. RC
    febbraio 11th, 2009

    E’ proprio vero! l’ho comprato oggi, Onomastici è davvero un bel programma ma soprattutto semplice da utilizzare ed utile per non dimenticare mai l onomastico dei contatti in rubrica, complimenti all’autore

  2. Lillone
    febbraio 11th, 2009

    L’interfaccia stupisce, sembra un programma fatto da Apple stessa

  3. scinfu
    febbraio 12th, 2009

    wow , interessante …. aspetto il continuo

  4. AlexPiex Tikre
    febbraio 12th, 2009

    Che dire semplicemente grandioso!!!
    Vorrei tanto conoscere questa persona :-) voglio delle ripetizioni!!

    Gran bella guida…viene voglia di azzardare in qualche bel programmino per il nostro i-phone.

  5. emilioCem
    febbraio 12th, 2009

    E’ fantastico il programma, semplice da usare,dovrò prenderlo anche per la mia ragazza, ci tiene tantissimo agli onomastici,complimenti.

  6. Ascatox
    febbraio 13th, 2009

    A riguardo consiglio un plugin per Firefox che permette l’utilizzo di una pratica GUI per gestire il db Sqllite.

    https://addons.mozilla.org/en-US/firefox/addon/5817

  7. Lillone
    febbraio 14th, 2009

    Per gestire i DB fatti con SQLite c’e’ anche questo interessante programma open source per tutte le piattaforme: http://sourceforge.net/projects/sqlitebrowser/

  8. Luca
    febbraio 14th, 2009

    wow bel tutorial! aspettiamo la continuazione!! :P

  9. andrea
    aprile 25th, 2010

    Ciao, non trovo la libreria libsqlite3.0.dylib.

Leave A Reply