Utilizzare SQLite in applicazioni basate sul .NET Framework

di , in LINQ,

Quando si realizza un'applicazione molto probabilmente si ha a che fare con dei dati. Questi dati possono provenire dalle fonti più disparate come servizi, database, file e così via. In genere si lavora con i database quando l'applicazione e il database sono nella stessa rete, mentre si preferisce lavorare con i servizi quando questo non è possibile perché o l'applicazione sfruttata da device mobili o perché il database si trova in un'altra rete o per altre cause come la sicurezza.

Qualunque sia l'approccio che scegliamo per accedere ai dati, abbiamo spesso bisogno di una cache locale per mantenere dati che vengono utilizzati frequentemente o che devono essere fruibili anche quando l'applicazione non ha accesso alla rete (situazione tipica di app per dispositivi mobili).

Il modo più efficace di mantenere questi dati in locale è usando un database locale che permetta di avere la potenza di un database sulla propria macchina e di avere quindi la possibilità di persistere e recuperare dati che sopravvivono ai riavvii dell'applicazione. Quando si parla di database locali, lo standard de facto è SQLite quindi in quest'articolo ci occuperemo di questo. Cominciamo col vedere quando usare un database locale.

Casi d'uso per un database locale

Supponiamo di avere un'applicazione che mostra un catalogo di prodotti da voler distribuire agli utenti. Poichè quest'applicazione può essere sfruttata sia da postazioni fisse che da device mobili (App WinRT o WPF, o altro ancora) dobbiamo garantirne il funzionamento anche in assenza di connettività. Per fare questo, come detto in precedenza, dobbiamo avere il catalogo in locale così che sia sempre fruibile e che quindi l'assenza di connettività non rappresenti un ostacolo per la User Experience dell'utente.

Quando l'utente decide di comprare un prodotto e inserisce i dati, se non c'è connettività l'applicazione va ovviamente in errore e l'utente si trova costretto a riprovare in un secondo momento. In questo caso salvare i dati dell'ordine rappresenta una grossa semplificazione per l'utente in quanto tutto quello che deve fare è recuperare l'ordine sospeso e provare a rinviarlo senza dover reinserire nulla.

Come accennato in precedenza, un altro caso in cui un database locale torna utile è la cache. Supponiamo di avere un'applicazione che ha molte tabelle di lookup che cambiano molto di rado. Quando abbiamo bisogno dei dati delle tabelle di lookup (perchè vogliamo mostrarli in una combo, una listbox o altro ancora) dobbiamo effettuare una query al database o al servizio. Effettuare la query ogni volta è uno spreco di risorse. La cosa migliore è memorizzare le tabelle di lookup in un database locale e sincronizzarle allo startup. Questo garantisce migliori performance dell'applicazione è quindi una migliore User Experience per l'utente.

Utilizzare SQLite da un'applicazione .NET

Nell'articolo su WinRTItalia dedicato a SQLite abbiamo introdotto SQLite e abbiamo visto il suo utilizzo in applicazioni WinRT. In quest'articolo vediamo invece come usare SQLite in applicazioni .NET classiche facendo anche un approfondimento sulla libreria SQLite-net che rappresenta al momento il miglior modo di accedere a SQLite.

Tutto il motore di SQLite è contenuto nella dll SQLite3. Questa deve essere scaricata dal sito di SQLite prestando attenzione a scaricare la versione per la piattaforma su cui deve girare la nostra applicazione (x64,x86). Una volta recuperata la dll dobbiamo semplicemente copiarla nella stessa directory in cui si trova l'eseguibile.

Una volta istallato il motore, dobbiamo cominciare a usarlo. Le API native di SQLite sono in C e quindi utilizzarle direttamente dal codice C# è tutt'altro che banale. Per fortuna, la libreria SQLite-net maschera questa complessità offrendoci un approccio a SQLite molto semplice e soprattutto basato sugli oggetti. La libreria è scaricabile gratuitamente da NuGet come mostrato nell'articolo menzionato in precedenza.

Ora che il sistema è configurato e pronto per l'uso, vediamo come creare un database per il catalogo di prodotti.

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

Utilizzare SQLite in applicazioni basate sul .NET Framework 1010 3
| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti