.: HosiriS :.

Informatica e non solo

Archive for the ‘SQLite’ Category

Da MySQL ad SQLite: convertiamo il codice SQL

Posted by hosiris su marzo 4, 2011

Dopo aver scoperto le potenzialità di SQLite avete provato ad utilizzare dei dump di MySQL e avete ricevuto errori? Tutto normale, purtroppo non tutto il codice SQL è riconosciuto da SQLite.
Si presenta quindi la necessità di modificare lo script per eliminare le incompatibilità… oppure possiamo utilizzare il seguente script bash (rigorosamente trovato in rete :P):


#!/bin/bash
if [ "x$1" == "x" ]; then
  echo "Usage: $0 "
  exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
  $a=$1;
  s/\\'\''/'\'\''/g;
  s/\\n/\n/g;
  s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: $1.db"
  rm $1.sql
  rm $1.err
else
  echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi

Purtroppo gli errori sono frequenti, ma con poche correzioni si può sistemare il tutto. Appena ho 5 min di pace posterò le mie modifiche.

Per il momento buon divertimento.

Posted in Programmazione, SQLite | Leave a Comment »

ToDoList con PHP e SQLite

Posted by hosiris su marzo 2, 2011

Quando ci si impegna nello sviluppo di una applicazione bisogna, come prima cosa, decidere gli strumenti da usare… reputo inutile sparare ad una mosca con un cannone, come è rischioso pescare squali con una canna da 2 metri. Bisogna, quindi, perdere del tempo per effettuare le giuste scelte.
Per questo motivo, nella realizzazione di una semplice todolist, ho deciso di usare PHP unito a SQLite: la mole di dati sarà molto bassa e l’applicazione server mi permette di accedere alla lista da qualsiasi posto io mi trovi.
Ma cominciamo con calma, vediamo alcuni concetti base per iniziare ad utilizzare un database di tipo SQLite.

SQLite è una applicazione cross platform scritta in C che fornisce la possibilità di organizzare i dati senza l’utilizzo di applicazioni server (come MySQL o Oracle). Concettualmente lavorare con un database di questo tipo, equivale ad aprire un file e scrivere i dati all’interno.
La sintassi è molto simile al linguaggio SQL, quindi non ci saranno novità in questo senso.

La prima cosa da fare è quella di abilitare i moduli php per utilizzare questa tecnologia, su ubuntu è estremamanete semplice perchè installando le librerie verrà automaticamente modificato il php.ini:

$ sudo apt-get install php5-sqlite

Adesso possiamo iniziare a programmare la nostra applicazione. Svilupperemo i componenti principali di un sistema CRUD (al momento ho sviluppato in maniera procedurale, ma sto già lavorando ad un classe specifica):

  • createdb.php: codice per la creazione del db e delle tabelle;
  • insertdata.php: codice per l’inserimento dei dati;
  • selectdata.php: codice per la selezione dei dati dal db;
  • editdata.php: modifica dei dati;
  • deletedata.php: per rimovere dati dal db

Inizializzare un db SQLite vuol dire accedere ad una risorsa, non ad un servizio, nel seguente modo:

$dbLink = sqlite_open("todolistdb.sqlite");
if(!is_resource($dbLink)){
    die ("ERRORE NELLA CREAZIONE DEL DATABASE");
}

Una volta che è stato aperto, possiamo eseguire la query per la creazione del DB:

    $query = "    CREATE TABLE items(
                    id_item INTEGER PRIMARY KEY,
                    item VARCHAR(50),
                    description TEXT,
                    ins_date DATE
                );";
    if(!@sqlite_query($dbLink, $query)){
        die("ERRORE NELLA CREAZIONE DELLA TABELLA") ;
    }

Credo sia inutile scrivere ogni query… il concetto di come funziona il tutto dovrebbe essere chiaro.
Il risultato sarà una cosa del genere:

Allego anche il codice php che comprende tutte le funzioni descritte prima.

DOWNLOAD TODOLIST

Posted in PHP, Progetti Personali, Programmazione, SQLite, ToDoList | Leave a Comment »