Existe-t-il un wrapper .NET / C # pour SQLite? [fermé]

267

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?

ian93
la source
4
Ceci est un double de cette question: stackoverflow.com/questions/26020/… et a une réponse différente.
Stewart Johnson
2
En fait, je crois que les deux réponses acceptées sont liées au même projet.
Colin

Réponses:

328

Depuis 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 désormais principalement effectués par l'équipe de développement 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, tous regroupés en un seul assemblage en mode mixte. Il s'agit d'un remplacement complet pour le sqlite3.dll d'origine (vous pouvez même le renommer en sqlite3.dll). Contrairement aux assemblys mixtes normaux, il n'a pas de dépendance de l'éditeur de liens sur le runtime .NET, il peut donc être distribué indépendamment de .NET. "

Il prend même en charge Mono.

ine
la source
33
C'est une vieille question mais j'ai dû ajouter mes 0,02 $. Roches System.Data.SQLite. Il est de qualité super raffinée, stable et commerciale. Mieux encore, il s'agit d'un code géré à 100% et a été publié en tant que code source du domaine public.
Nathan Ridley,
4
Juste pour la cohérence, parce que les gens parlent de deux choses différentes. Dans sqlite.phxsoftware.com, vous êtes dirigé vers sourceforge.net/projects/sqlite-dotnet2 pour le téléchargement.
yeyeyerman
16
Ce wrapper n'est plus développé par son auteur d'origine, et le développement semble avoir été repris par SQLite lui-même. Le nouveau site se trouve sur system.data.sqlite.org, bien qu'il semble actuellement moins convivial et plus en cours de travail que l'original.
mikel
5
@NathanRidley - Êtes-vous sûr qu'il est géré à 100%, car cette réponse indique que "System.Data.SQLite est le moteur de base de données SQLite original et un fournisseur ADO.NET 2.0 complet, tous réunis en un seul assemblage en mode mixte."
logicnp
2
Pour info, j'ai essayé d'utiliser le package Microsoft.Data.Sqlite .NET Standard Nuget de Microsoft, mais il a échoué sur une poignée de tests d'intégration dans la bibliothèque AsyncPoco Github. Après être passé à System.Data.SQLite, tout a parfaitement fonctionné.
Lee Grissom du
15

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

Depuis leur page d'accueil :

Il s'agit d'un fork de l'adaptateur ADO.NET 4.0 pour SQLite connu sous le nom de System.Data.SQLite. Le créateur de System.Data.SQLite, Robert Simpson, est au courant de cette fourchette, a exprimé son approbation et a des privilèges de validation sur le nouveau référentiel Fossil. L'équipe de développement SQLite a l'intention de maintenir System.Data.SQLite à l'avenir.

Les versions historiques, ainsi que les forums de support d'origine, peuvent toujours être trouvés sur http://sqlite.phxsoftware.com , bien qu'il n'y ait eu aucune mise à jour de cette version depuis avril 2010.

La liste complète des fonctionnalités peut être consultée sur leur wiki . Les faits saillants comprennent

  • Prise en charge d'ADO.NET 2.0
  • Prise en charge complète de l'entité Framework
  • Prise en charge Mono complète
  • Prise en charge de Visual Studio 2005/2008 Design-Time
  • Cadre compact, prise en charge C / C ++

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

David Schmitt
la source
des DLL prêtes à l'emploi sont maintenant disponibles
zomf
8

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é en une seule DLL. Pas sqlite3.dll - parce que le code C de SQLite est incorporé dans System.Data.SQLite.dll. Un peu de magie C ++ managée.

tonyz
la source
lien est actuellement 404
SqlACID
7

sqlite-net est une bibliothèque open source minimale pour permettre aux applications .NET et Mono de stocker des données dans des bases de données SQLite 3 . Plus d'informations sur la page wiki .

Il est écrit en C # et est destiné à être simplement compilé avec vos projets. Il a d'abord été conçu pour fonctionner avec MonoTouch sur l'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 package Nuget , où il s'agit du 2e package SQLite le plus populaire avec plus de 60000 téléchargements en 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 sur SQLite et doit être rapide et efficace. (La bibliothèque ne doit pas être le goulot d'étranglement des performances de vos requêtes.)
  • Méthodes très simples pour exécuter des opérations et des requêtes CRUD en toute sécurité (en utilisant des paramètres) et pour récupérer les résultats de ces requêtes de manière fortement typée.
  • Fonctionne avec votre modèle de données sans vous forcer à changer vos classes. (Contient une petite couche ORM pilotée par réflexion.)
  • 0 dépendances à part une forme compilée de la bibliothèque sqlite2.

Les non-objectifs comprennent:

  • Pas une implémentation ADO.NET. Ce n'est pas un pilote SQLite complet. Si vous en avez besoin, utilisez System.Data.SQLite.
dodgy_coder
la source
Je remarque que la plupart des commentaires antérieurs à 2014 indiquaient System.Data.SQLite que j'ai essayé d'installer sur mon application Windows Store (ne fonctionnait pas). Sqlite-net fonctionne.
JeeShen Lee
2

Mono est livré avec un emballage. https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 donne le code pour envelopper 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/ ) de manière conviviale .net. Cela fonctionne sous Linux ou Windows.

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

Expiation limitée
la source
2

Microsoft.Data.Sqlite

Microsoft fournit désormais Microsoft.Data.Sqlite en tant que solution SQLite propriétaire pour .NET, qui est fournie dans le cadre d'ASP.NET Core. La licence est la licence Apache, version 2.0 .

* Avertissement: Je ne l' ai pas fait essayé d' utiliser ce encore moi - même, mais il y a une documentation fournie sur Microsoft Docs ici pour l' utiliser avec .NET Core UWP.

Christopher Kyle Horton
la source
2

Pour ceux comme moi qui n'ont pas besoin ou ne veulent pas d'ADO.NET, ceux qui ont besoin d'exécuter du code plus près 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 en tant que nuget ici https://www.nuget.org/packages/SqlNado mais également disponible en tant que fichier .cs unique, il est donc assez pratique à utiliser dans n'importe quel type de projet C #.

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

  • Mappage classe-table automatique (Save, Delete, 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 fil
  • Où et OrderBy LINQ / IQueryable .NET expressions 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 E / S BLOB incrémentielles SQLite sont exposées en tant que flux .NET pour éviter une consommation élevée de mémoire
  • Prise en charge du classement SQLite, y compris la possibilité d'ajouter des classements personnalisés à l'aide du code .NET
  • Prise en charge du moteur de recherche de texte intégral SQLite (FTS3), y compris la possibilité d'ajouter des jetons FTS3 personnalisés à l'aide du code .NET (comme les mots vides localisés par exemple). Je ne crois pas que d'autres wrappers .NET fassent cela.
  • Prise en charge automatique de Windows 'winsqlite3.dll' (uniquement sur les versions récentes de Windows) pour éviter l'envoi de tout fichier de dépendance binaire . Cela fonctionne également dans les applications Web Azure !.
Simon Mourier
la source
0

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 en gros, cela vous permet d'utiliser les modèles ADO .NET habituels avec sqlite.

user203709
la source
0

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 pour le développement d'applications de base de données basées sur SQLite. Dans le cadre du développement de l'application de base de données Devart, dotConnect for SQLite offre à la fois une connectivité native haute performance à 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 concevoir l'architecture d'application, augmente la productivité et tire parti de la mise en œuvre des applications de base de données.

J'utilise la version standard, cela fonctionne parfaitement :)

Antonio
la source
0

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

Projet SQLiteWrapper

Eminem
la source