SQLite con Visual Studio 2008 / C#

Leave a comment
Share

SQLite è uno dei DataBase che più agevolmente si presta a diventare un valido sostituto di Access.
Come database embedded è leggerissimo, non ha bisogno di nessuna installazione se non quella del provider ADO.NET System.Data.SQLite.

Anche se non obbligatorio, www.j-hokkaido.com è’ opportuno scaricare il database e i tools dal sito di SQLite soprattutto sqlite3.exe che fornisce una console “linea comandi” di gestione al database, una vera manna per gli smanettoni.

Oltre a fornire l’interfaccia / provider ADO.NET di SQLite è possibile “disegnare” la propria base dati e, all’occasione poter creare il database.

Il problema dell’interfaccia ide è che si tratta di un addon, sulla versione Express non è prevista, nel designer di connessioni e dataset altri database che non siano Access o Sql Express entrambi gestiti in locale.

Per poter aggirare questa limitazione i creatori del driver hanno pensato bene di permettere di “sganciare” da express il provider di Access e sostituire provvisoriamente il proprio a questo.

L’installazione aggiunge nel menù un semplice programma che su Visual Express provvede a sganciare / riagganciare access tra i provider.

Con esclusione della versione Express 2008 su tutte le altre versioni di Visual Studio 2005 e 2008 è possibile utilizzare il wizard per la definizione del dataset tipizzato, della connessione ai dati ed eventualmente creare anche il database.

Su Express 2008 c’è un bug già riconosciuto che impedisce l’utilizzo del wizard e del designer, il collegamento “a mano” con la definizione da codice è sempre possibile, come è possibile in tutte le altri progetti basati sul Framework 2 o successivi.

Nei casi in cui non sia possibile geneare un nuovo database tramite l’ide è possibile utilizzare il programma console sqlite3.exe.

Un esempio di utilizzo del programma a linea comandi:
D:\sqlite>sqlite3.exe dbprova.db3
sqlite> create table tableprova (id integer primary key autoincrement, descrizione varchar(50), valore decimal(10,3));

Per “solidarietà” con la versione express non utilizzo la definizione del dataset tipizzato / tableadapter.
Tra l’altro .. sono andato a “sbirciare” sul dataset tipizzato / tableadapter di prova generato da visual express 2005, beh il codice è comunque incompleto.

Se può essere d’aiuto la gestione del dataset può essere fatta con un database di access e poi si può intervenire nella classe generata dal wizard con una nostra “partial class” che dall’interno riconfiguri tutti gli elementi (command, connection, ecc) facendoli puntare a SQLite.

Proseguiamo con l’aggiungere un dataset non tipizzato al progetto.

Aggiungiamo un DataTable “tableprova” al progetto e i 3 campi:

Id – Int32 (PK, autonumber (-1 sul seed e sullo start))
Descrizione – string
Valore – Decimal

Completata questa fase è possibile aggiungere alla form selezionandoli dalla casella degi strumenti il controllo BindingSource e il controllo BindingNavigator .

Agendo sulla prprietà dei controlli colleghiamo BindingNavigator a BindingSource e BindingSource al DataSet il bindinsource collegato al dataset/tableprova.

Ora inizia la parte difficile, dobbiamo sostituire quanto fa il designer che genera il TableAdapter  un oggetto che è costruito ad hoc dal wizard, al suo posto utilizzeremo un normale DataAdapter.

A livello di classe definiamo un oggetto di tipo DataAdapter 

C#
SQLiteDataAdapter daTableProva;
// Definiamo anche la stringa di connessione

string Connessione = Properties.Settings.Default.Connessione;

Per la configurazione del SQLiteDataAdapter ho introdotto un metodo apposito “Inizializza”.

C#
void Inizializza()
{
   SQLiteConnection cn = new SQLiteConnection

Lascia un Commento