web-dev-qa-db-fra.com

Existe-t-il un wrapper .NET / C # pour SQLite?

J'aimerais en quelque sorte utiliser SQLite à partir de C # .Net, mais je n'arrive pas à trouver une bibliothèque appropriée. Est-ce qu'il y a un? Un officiel? Existe-t-il d'autres façons d'utiliser SQLite qu'avec un wrapper?

266
ian93

De https://system.data.sqlite.org :

System.Data.SQLite est un adaptateur ADO.NET pour SQLite.

System.Data.SQLite a été lancé par Robert Simpson. Robert a toujours des privilèges de validation sur ce référentiel mais n'est plus un contributeur actif. Les travaux de développement et de maintenance sont maintenant principalement effectués par l’équipe de développement de SQLite. L’équipe SQLite s’engage à prendre en charge System.Data.SQLite à long terme.

"System.Data.SQLite est le moteur de base de données SQLite d'origine et un fournisseur ADO.NET 2.0 complet regroupés dans un seul assemblage en mode mixte. Il s'agit d'un remplacement instantané complet du sqlite3.dll d'origine (vous pouvez même le renommer sqlite3.dll). Contrairement aux assemblages mixtes normaux, il n’a aucune dépendance de l’éditeur de liens sur le runtime .NET, il peut donc être distribué indépendamment de .NET. "

Il supporte même Mono.

327
ine

Voici ceux que je peux trouver:

Sources:

32
Tom Robinson

Il y a aussi maintenant cette option: http://code.google.com/p/csharp-sqlite/ - un portage complet de SQLite en C #.

26
xanadont

Les gens de sqlite.org ont pris en charge le développement du fournisseur ADO.NET:

De leur page d'accueil :

Il s’agit d’un fork du célèbre adaptateur ADO.NET 4.0 pour SQLite appelé System.Data.SQLite. Robert Simpson, l'initiateur de System.Data.SQLite, est au courant de cette fourchette, a exprimé son accord et dispose des privilèges de validation sur le nouveau référentiel Fossil. L’équipe de développement SQLite al’intention de maintenir System.Data.SQLite à l’avenir.

Les versions historiques, ainsi que les forums de support d'origine, sont toujours disponibles à l'adresse http://sqlite.phxsoftware.com , bien qu'aucune mise à jour de cette version n'ait été mise à jour depuis avril 2010.

La liste complète des fonctionnalités peut être trouvée à sur leur wiki . Les points forts comprennent

  • Prise en charge d'ADO.NET 2.0
  • Prise en charge complète du cadre d'entité
  • Support complet en mono
  • Prise en charge de Visual Studio 2005/2008 au moment du design
  • Compact Framework, prise en charge C/C++

Les DLL publiées peuvent être téléchargées directement à partir de le site .

15
David Schmitt

J'irais certainement avec System.Data.SQLite (comme mentionné précédemment: http://sqlite.phxsoftware.com/ =)

Il est cohérent avec ADO.NET (System.Data. *) Et est compilé dans une seule DLL. No sqlite3.dll, car le code C de SQLite est incorporé à System.Data.SQLite.dll. Un peu de magie gérée en C++.

8
tonyz

sqlite-net est une bibliothèque minimale à code source ouvert permettant aux applications .NET et Mono de stocker des données dans bases de données SQLite . Plus d'informations sur le page du wiki .

Il est écrit en C # et doit être simplement compilé avec vos projets. Il a d'abord été conçu pour fonctionner avec MonoTouch sur iPhone, mais a grandi pour fonctionner sur toutes les plateformes (Mono pour Android, .NET, Silverlight, WP7, WinRT, Azure, etc.).

Il est disponible sous forme de paquet Nuget , où il s’agit du deuxième paquet SQLite le plus populaire avec plus de 60 000 téléchargements à partir de 2014.

sqlite-net a été conçu comme une couche de base de données rapide et pratique. Sa conception découle de ces objectifs:

  • Très facile à intégrer aux projets existants et aux projets MonoTouch.
  • Thin wrapper over SQLite et devrait être rapide et efficace. (La bibliothèque ne doit pas être le goulot d'étranglement des performances de vos requêtes.)
  • Des méthodes très simples pour exécuter des opérations et des requêtes CRUD en toute sécurité (à l'aide de paramètres) et pour extraire les résultats de ces requêtes de manière très typée.
  • Fonctionne avec votre modèle de données sans vous obliger à changer de classe. (Contient une petite couche ORM basée sur la réflexion.)
  • 0 dépendances en dehors d'une forme compilée de la bibliothèque sqlite2.

Les non-objectifs incluent:

  • Non une implémentation ADO.NET. Ce n'est pas un pilote SQLite complet. Si vous en avez besoin, utilisez System.Data.SQLite.
7
dodgy_coder

Mono est livré avec un wrapper. https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2. donne le code pour encapsuler la dll SQLite réelle (- http://www.sqlite.org/sqlite-Shell-win32-x86-3071300.Zip trouvé sur la page de téléchargement http://www.sqlite.org/download.html/ ) d'une manière conviviale .net. Cela fonctionne sous Linux ou Windows.

Cela semble le plus mince de tous les mondes, minimisant votre dépendance aux bibliothèques tierces. Si je devais faire ce projet à partir de zéro, c'est comme ça que je le ferais.

2
Limited Atonement

Microsoft.Data.Sqlite

Microsoft fournit maintenant Microsoft.Data.Sqlite en tant que solution SQLite de premier plan pour .NET, fournie avec ASP.NET Core. La licence est la Licence Apache, version 2. .

* Clause de non-responsabilité: Je n'ai pas encore essayé d'utiliser cette solution moi-même, mais une documentation est fournie sur Microsoft Docs ici pour l'utiliser avec .NET Core et UWP.

Pour ceux qui, comme moi, n’ont pas besoin ou ne veulent pas d’ADO.NET, ceux qui doivent exécuter un code plus proche de SQLite, mais toujours compatible avec netstandard (framework .net, noyau .net, etc.), J'ai construit un projet Open Source 100% gratuit appelé SQLNado (pour "Not ADO") disponible sur github ici:

https://github.com/smourier/SQLNado

Il est disponible sous forme de nuget ici https://www.nuget.org/packages/SqlNado mais également sous forme de fichier .cs unique. Il est donc très pratique de l'utiliser dans tout type de projet C #.

Il prend en charge toutes les fonctionnalités de SQLite lors de l'utilisation de commandes SQL, ainsi que la plupart des fonctionnalités de SQLite via .NET:

  • Mappage automatique de classe en table (Enregistrer, Supprimer, Load, LoadAll, LoadByPrimaryKey, LoadByForeignKey, etc.)
  • Synchronisation automatique du schéma (tables, colonnes) entre les classes et la table existante
  • Conçu pour les opérations sans filetage
  • Where et OrderBy Les expressions .NET LINQ/IQueryable sont prises en charge (le travail est toujours en cours dans ce domaine), également avec la prise en charge du classement.
  • Schéma de base de données SQLite (tables, colonnes, etc.) exposé à .NET
  • Les fonctions personnalisées SQLite peuvent être écrites en .NET
  • Les entrées/sorties BLOB incrémentielles SQLite sont exposées en tant que flux .NET pour éviter une consommation de mémoire importante
  • Prise en charge des classements SQLite, y compris la possibilité d'ajouter des classements personnalisés à l'aide de code .NET
  • Prise en charge du moteur de recherche de texte intégral SQLite (FTS3), comprenant la possibilité d'ajouter des tokenizer FTS3 personnalisés à l'aide de code .NET (comme des mots vides localisés, par exemple). Je ne crois pas que d’autres wrappers .NET fassent cela.
  • La prise en charge automatique de Windows 'winsqlite3.dll' (uniquement sur les versions récentes de Windows) permet d'éviter l'envoi de fichiers de dépendance binaire . Cela fonctionne également dans les applications Web Azure !.
1
Simon Mourier

La version 1.2 de Monotouch inclut la prise en charge de System.Data. Vous pouvez trouver plus de détails ici: http://monotouch.net/Documentation/System.Data

Mais fondamentalement, cela vous permet d’utiliser les modèles ADO .NET habituels avec sqlite.

0
user203709

Un wrapper à nu des fonctions fourni par la bibliothèque sqlite. La dernière version prend en charge les fonctions fournies par la bibliothèque sqlite 3.7.10

projet SQLiteWrapper

0
Eminem

http://www.devart.com/dotconnect/sqlite/

dotConnect for SQLite est un fournisseur de données amélioré pour SQLite qui s'appuie sur la technologie ADO.NET pour présenter une solution complète de développement d'applications de base de données basées sur SQLite. Dans le cadre du cadre de développement des applications de base de données Devart, dotConnect for SQLite offre à la fois une connectivité native hautes performances à la base de données SQLite et un certain nombre d'outils et de technologies de développement innovants.

dotConnect for SQLite introduit de nouvelles approches pour la conception d'architecture d'application, augmente la productivité et exploite la mise en œuvre d'applications de base de données.

J'utilise la version standard, ça marche parfaitement :)

0
Antonio