ASP.Net & SQLite

di: Francesco Camarlinghi     21 Novembre 2007

Molto spesso durante lo sviluppo di un sito internet abbiamo bisogno di gestire piccole quantità di dati, tali da non giustificare l'acquisto di spazio su database Sql Server o MySql. La soluzione sicuramente più immediata, che per essere implementata, tuttavia, ci costringe a scrivere molto codice e soprattutto ci preclude l'uso di un linguaggio di interrogazione semplice, potente e flessibile come SQL, consiste nell'utilizzo di file di testo o XML come base di dati. Una soluzione alternativa e, tutto sommato, poco conosciuta risiede invece nell'uso di SQLite.

SQLite: cos'è?

SQLite è una piccola libreria scritta in C (ma di cui sono disponibili port per molti linguaggi e piattaforme) che implementa un vero e proprio motore di database. La versione stabile più recente nel momento in cui scrivo è la 3.5.1. Le principali caratteristiche di SQLite sono:

  • la semplicità: nessun bisogno di installazione e configurazione, ideale quindi per soluzioni di hosting senza supporto per SQL Server e simili;
  • la compattezza: un intero database è contenuto in un unico file, indipendente dal sistema operativo;
  • il supporto degli standard: SQLite implementa quasi completamente il linguaggio SQL;
  • la velocità: più veloce di altri database nello svolgere alcuni compiti;
  • il costo: gratuito. I sorgenti sono di dominio pubblico ed utilizzabili in qualsiasi applicazione, anche commerciale.

È bene notare che, nonostante vanti molti pregi, proprio a causa della sua leggerezza SQLite porta con se anche alcuni difetti, come l'esclusione di alcune instruzioni SQL (ad esempio manca il supporto a FOREIGN KEY e CONSTRAINT), oppure problemi di prestazioni in scenari di utilizzo caratterizzati da accessi molto frequenti a quantità di dati di dimensione notevole.

Prima di proseguire con l'articolo penso siano d'obbligo alcune precisazioni che potranno evitarvi molti grattacapi in futuro.

SQLite 3.x supporta soltanto 5 tipi di dati: NULL, INTEGER, REAL, TEXT, BLOB e, ad esclusione del campo Integer con attributo PRIMARY KEY, ogni colonna può contenere qualsiasi tipo di dato. Quindi inserire una stringa in un campo intero non genererà errori.

Per facilitare la convivenza con basi di dati più fortemente tipizzate, SQLite ha introdotto, con la versione 3.0, la Column Affinity, un sistema che trasforma automaticamente, ad esempio, un campo definito come VARCHAR in uno TEXT. La query:

CREATE TABLE test ( t VARCHAR(200) );

verrà quindi trasformata, senza che si verifichino errori, in:

CREATE TABLE test ( t TEXT);

Ovviamente perderemo il controllo sulla lunghezza del campo, che non sarà più di 200 caratteri. Per maggiori informazioni sulla Column Affinity vi rimando alla documentazione ufficiale.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Amministratore di Reti Windows Server 2008

20 Febbraio 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto