Dot.Blog

Consulting DotNet C#, XAML, WinUI, WPF, MAUI, IA

Utiliser SQLite ou LiteDB pour stocker des données locales dans une appli .NET moderne

Permettre à une application .NET (WinUI, WPF, MAUI, etc.) de stocker et lire des données en local, de manière légère, sans serveur ni cloud c'est possible. Il existe des solutions simples et efficaces.

On comparera deux options :

  • SQLite (base relationnelle, fichiers .db)
  • LiteDB (base NoSQL en document, fichiers .db, purement C#)

🧩 Choisir entre SQLite et LiteDB

Critère

SQLite

LiteDB

Type

Relationnelle (SQL)

NoSQL (documents BSON)

API

System.Data.Sqlite

API 100% C#

Dépendances externes

Oui (DLL native)

Non (managed only)

Requête

SQL classique

LINQ ou requêtes LiteDB

Utilisation multiplateforme

Oui (via .NET 6/7/8/9)

Oui (entièrement managé)

Taille

Petite

Très petite

💾 Option 1 – Utiliser SQLite en C#

Installation

Ajoutez le package NuGet : Microsoft.Data.Sqlite
Selon la plateforme des packages spécifiques peuvent être nécessaires, regardez le site officiel Microsoft pour obtenir une information à jour au moment où vous en aurez besoin !

Exemple complet

using Microsoft.Data.Sqlite;
// Création et insertion

using var conn = new SqliteConnection("Data Source=donnees.db");
conn.Open();

var cmd = conn.CreateCommand();
cmd.CommandText = @"
    CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY, texte TEXT);
    INSERT INTO messages (texte) VALUES ('Bonjour SQLite');
";
cmd.ExecuteNonQuery();

// Lecture
cmd.CommandText = "SELECT id, texte FROM messages";
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
    Console.WriteLine($"[{reader.GetInt32(0)}] {reader.GetString(1)}");
}

📂 Option 2 – Utiliser LiteDB en C#

Installation

Ajoutez le package NuGet : LiteDB

Selon la plateforme des packages spécifiques peuvent être nécessaires, regardez le site officiel Microsoft pour obtenir une information à jour au moment où vous en aurez besoin !

Exemple complet

using LiteDB;
 public class Message
{
    public int Id { get; set; }
    public string Texte { get; set; }
}

// Création / insertion
using var db = new LiteDatabase("donneesLite.db");
var col = db.GetCollection<Message>("messages");
col.Insert(new Message { Texte = "Bonjour LiteDB" });

// Lecture
var all = col.FindAll();
foreach (var msg in all)
{
    Console.WriteLine($"[{msg.Id}] {msg.Texte}");
}

🖥️ Intégration dans une app UI

Les deux bases peuvent être utilisées dans des ViewModel, injectées via des services, ou encapsulées derrière des interfaces comme IRepository<T> pour découpler stockage et logique.

🧠 À retenir

  • SQLite est universel, très connu, puissant pour requêtes complexes.
  • LiteDB est 100% C#, ultra simple, sans dépendance native.
  • Les deux peuvent être utilisés pour :
    • stocker un historique
    • enregistrer des préférences
    • créer un cache local
    • sauvegarder des résultats de traitement IA

Conclusion

Pour des apps desktop ou mobiles modernes qui ne veulent ni base distante, ni cloud, SQLite et LiteDB sont les alliés idéaux. Choisissez selon vos besoins : SQL structuré ou objets simples à manipuler, c'est à trancher selon le projet.

Faites des heureux, PARTAGEZ l'article !