Apprendre à Utiliser SQLite à Travers .NET

Une fois notre modèle en place, on peut commencer à réaliser des opérations CRUD.

Sélectionnez1.2.3.4.5.6.7.8.9.10.11.12.public void Test(SQLiteConnection conn) { Role r1 = new Role() { Name = "Administrator" }; Role r2 = new Role() { Name = "Visitor" }; r1 = conn.Insert(r1); r2 = conn.Insert(r2); Personne p1 = new Personne() { LastName = "Pierre", FirstName = "Paul", RoleId = r1.Id }; conn.Insert(p1); // Des méthodes similaires existent pour les opérations Update et Delete List<Role> roles = conn.Table<Role>().Where(x => x.Name == "Administrator").ToList(); IEnumerable<Personne> personnes = conn.Query<Personne>("SELECT * FROM People WHERE RoleId = {0}", r1.Id); }

L'utilisation de requêtes écrites directement en SQL (via la méthode Query(…)) nous fait perdre les avantages d'utiliser C# (pas de vérification syntaxique à la compilation, par exemple ; il faut donc faire attention à bien repasser sur ce code en cas de modification du modèle), mais permet de réaliser des requêtes complexes de manière efficace et performante. Dans le cas d'une requête sur une table avec de nombreuses colonnes, on peut écrire du code qui nous retourne uniquement les champs désirés (équivalent de SELECT x, y, z au lieu de SELECT *). C'est aussi très utile dans le cas où il est nécessaire de faire plusieurs jointures entre différentes tables (évite dans ce cas l'utilisation de boucle ou le passage par des objets C# pour stocker nos résultats intermédiaires).

Il est aussi possible d'utiliser la méthode Execute(…) qui permet d'exécuter du code SQL sans retour de données (contrairement à Query(…)). C'est particulièrement utile dans le cas de suppressions ou de mises à jour en masse (au lieu d'utiliser une boucle). Pour les insertions en masse, il existe aussi la méthode InsertAll(IEnumerable, bool runInTransaction) ainsi que son équivalent UpdateAll pour les mises à jour.

Tag » Apprendre Sqlite3