Gibt es einen .NET / C # -Wrapper für SQLite? [geschlossen]

267

Ich würde SQLite gerne in C # .Net verwenden, aber ich kann anscheinend keine geeignete Bibliothek finden. Ist dort eines? Eine offizielle? Gibt es andere Möglichkeiten, SQLite als mit einem Wrapper zu verwenden?

ian93
quelle
4
Dies ist ein Duplikat dieser Frage: stackoverflow.com/questions/26020/… und hat eine andere Antwort.
Stewart Johnson
2
Eigentlich glaube ich, dass beide akzeptierten Antworten auf dasselbe Projekt verweisen.
Colin

Antworten:

328

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

System.Data.SQLite ist ein ADO.NET-Adapter für SQLite.

System.Data.SQLite wurde von Robert Simpson gestartet. Robert hat weiterhin Festschreibungsrechte für dieses Repository, ist jedoch kein aktiver Mitwirkender mehr. Entwicklungs- und Wartungsarbeiten werden heute hauptsächlich vom SQLite-Entwicklungsteam durchgeführt. Das SQLite-Team ist bestrebt, System.Data.SQLite langfristig zu unterstützen.

"System.Data.SQLite ist das ursprüngliche SQLite-Datenbankmodul und ein vollständiger ADO.NET 2.0-Anbieter, die alle in einer einzigen Assembly im gemischten Modus zusammengefasst sind. Es ist ein vollständiger Drop-In-Ersatz für die ursprüngliche sqlite3.dll (Sie können sie sogar in umbenennen) sqlite3.dll). Im Gegensatz zu normalen gemischten Assemblys besteht keine Linker-Abhängigkeit von der .NET-Laufzeit, sodass es unabhängig von .NET verteilt werden kann. "

Es unterstützt sogar Mono.

ine
quelle
33
Dies ist eine alte Frage, aber ich musste meine $ 0,02 hinzufügen. System.Data.SQLite rockt. Es ist super raffiniert, stabil und von handelsüblicher Qualität. Das Beste ist, dass es sich um 100% verwalteten Code handelt und als gemeinfreier Quellcode veröffentlicht wurde.
Nathan Ridley
4
Nur aus Gründen der Konsistenz, weil die Leute über beides als verschiedene Dinge sprechen. In sqlite.phxsoftware.com wird zum Herunterladen auf sourceforge.net/projects/sqlite-dotnet2 verwiesen.
Yeyeyerman
16
Dieser Wrapper wird nicht mehr von seinem ursprünglichen Autor entwickelt, und die Entwicklung scheint von SQLite selbst übernommen worden zu sein. Die neue Website befindet sich unter system.data.sqlite.org, scheint jedoch im Vergleich zum Original weniger benutzerfreundlich und in Arbeit zu sein.
Mikel
5
@NathanRidley - Sind Sie sicher, dass es zu 100% verwaltet wird, denn in dieser Antwort heißt es: "System.Data.SQLite ist das ursprüngliche SQLite-Datenbankmodul und ein vollständiger ADO.NET 2.0-Anbieter, die alle in einer einzigen Assembly im gemischten Modus zusammengefasst sind."
Logicnp
2
Zu Ihrer Information, ich habe versucht, das Microsoft Microsoft.Data.Sqlite .NET Standard Nuget-Paket zu verwenden, aber es ist bei einigen Integrationstests in der AsyncPoco Github-Bibliothek fehlgeschlagen. Nach dem Wechsel zu System.Data.SQLite funktionierte alles einwandfrei.
Lee Grissom
15

Die Leute von sqlite.org haben die Entwicklung des ADO.NET-Anbieters übernommen:

Von ihrer Homepage :

Dies ist eine Abzweigung des beliebten ADO.NET 4.0-Adapters für SQLite, der als System.Data.SQLite bekannt ist. Der Urheber von System.Data.SQLite, Robert Simpson, ist sich dieser Gabelung bewusst, hat seine Zustimmung zum Ausdruck gebracht und Berechtigungen für das neue Fossil-Repository festgeschrieben. Das SQLite-Entwicklungsteam beabsichtigt, System.Data.SQLite auch in Zukunft beizubehalten.

Historische Versionen sowie die ursprünglichen Support-Foren finden Sie weiterhin unter http://sqlite.phxsoftware.com , obwohl seit April 2010 keine Aktualisierungen dieser Version vorgenommen wurden.

Die vollständige Liste der Funktionen finden Sie im Wiki . Highlights sind

  • ADO.NET 2.0-Unterstützung
  • Volle Unterstützung für Entity Framework
  • Volle Mono-Unterstützung
  • Unterstützung für Visual Studio 2005/2008 Design-Time
  • Compact Framework, C / C ++ - Unterstützung

Freigegebene DLLs können direkt von der Site heruntergeladen werden .

David Schmitt
quelle
fertige DLLs sind jetzt verfügbar
zomf
8

Ich würde definitiv mit System.Data.SQLite gehen (wie bereits erwähnt: http://sqlite.phxsoftware.com/ )

Es ist kohärent mit ADO.NET (System.Data. *) Und wird in einer einzigen DLL kompiliert. Keine sqlite3.dll - da der C-Code von SQLite in System.Data.SQLite.dll eingebettet ist. Ein bisschen verwaltete C ++ - Magie.

tonyz
quelle
Link ist derzeit 404
SqlACID
7

sqlite-net ist eine Open Source-Minimalbibliothek, mit der .NET- und Mono-Anwendungen Daten in SQLite 3-Datenbanken speichern können . Weitere Informationen auf der Wiki-Seite .

Es ist in C # geschrieben und soll einfach mit Ihren Projekten kompiliert werden. Es wurde zuerst für die Verwendung mit MonoTouch auf dem iPhone entwickelt, ist jedoch für alle Plattformen (Mono für Android, .NET, Silverlight, WP7, WinRT, Azure usw.) geeignet.

Es ist als Nuget-Paket erhältlich , wo es mit über 60.000 Downloads ab 2014 das zweitbeliebteste SQLite-Paket ist.

sqlite-net wurde als schnelle und bequeme Datenbankschicht konzipiert. Sein Design folgt aus diesen Zielen:

  • Sehr einfach in bestehende Projekte und in MonoTouch-Projekte zu integrieren.
  • Thin Wrapper über SQLite und sollte schnell und effizient sein. (Die Bibliothek sollte nicht der Leistungsengpass Ihrer Abfragen sein.)
  • Sehr einfache Methoden zum sicheren Ausführen von CRUD-Operationen und -Abfragen (unter Verwendung von Parametern) und zum Abrufen der Ergebnisse dieser Abfragen auf stark typisierte Weise.
  • Funktioniert mit Ihrem Datenmodell, ohne dass Sie gezwungen sind, Ihre Klassen zu ändern. (Enthält eine kleine reflexionsgesteuerte ORM-Schicht.)
  • 0 Abhängigkeiten abgesehen von einer kompilierten Form der sqlite2-Bibliothek.

Nichtziele sind:

  • Keine ADO.NET-Implementierung. Dies ist kein vollständiger SQLite-Treiber. Wenn Sie das brauchen, verwenden Sie System.Data.SQLite.
dodgy_coder
quelle
Ich stelle fest, dass der größte Teil des Kommentars vor 2014 System.Data.SQLite enthielt, das ich auf meiner Windows Store App installieren wollte (funktionierte nicht). Sqlite-net funktioniert.
JeeShen Lee
2

Mono wird mit einer Hülle geliefert. https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 enthält Code zum Umschließen der eigentlichen SQLite-DLL ( http: //www.sqlite). org / sqlite-shell-win32-x86-3071300.zip auf der Download-Seite http://www.sqlite.org/download.html/ ) auf .net-freundliche Weise. Es funktioniert unter Linux oder Windows.

Dies scheint die dünnste aller Welten zu sein, wodurch Ihre Abhängigkeit von Bibliotheken von Drittanbietern minimiert wird. Wenn ich dieses Projekt von Grund auf neu machen müsste, würde ich es so machen.

Begrenzte Versöhnung
quelle
2

Microsoft.Data.Sqlite

Microsoft bietet jetzt Microsoft.Data.Sqlite als SQLite-Erstanbieterlösung für .NET an, die als Teil von ASP.NET Core bereitgestellt wird. Die Lizenz ist die Apache-Lizenz, Version 2.0 .

* Disclaimer: Ich habe nicht wirklich versucht , mich dies noch mit, aber es gibt einige Dokumentation auf Microsoft Docs zur Verfügung gestellt hier für die Verwendung mit .NET - Core und UWP.

Christopher Kyle Horton
quelle
2

Für diejenigen wie mich, die ADO.NET nicht benötigen oder nicht möchten, diejenigen, die Code näher an SQLite ausführen müssen, aber dennoch mit netstandard(.net Framework, .net Core usw.) kompatibel sind , habe ich eine erstellt 100% kostenloses Open Source Projekt namens SQLNado (für "Not ADO") auf github hier verfügbar:

https://github.com/smourier/SQLNado

Es ist hier als Nuget verfügbar: https://www.nuget.org/packages/SqlNado, aber auch als einzelne CS-Datei, sodass es in jedem C # -Projekttyp sehr praktisch ist.

Es unterstützt alle SQLite-Funktionen bei Verwendung von SQL-Befehlen und die meisten SQLite-Funktionen über .NET:

  • Automatische Zuordnung von Klasse zu Tabelle (Speichern, Löschen, Laden, LoadAll, LoadByPrimaryKey, LoadByForeignKey usw.)
  • Automatische Synchronisation des Schemas (Tabellen, Spalten) zwischen Klassen und vorhandener Tabelle
  • Entwickelt für threadsicheren Betrieb
  • Where und OrderBy LINQ / IQueryable .NET-Ausdrücke werden unterstützt (in diesem Bereich wird noch gearbeitet), auch mit Unterstützung für die Sortierung
  • SQLite-Datenbankschema (Tabellen, Spalten usw.), das für .NET verfügbar gemacht wird
  • Benutzerdefinierte SQLite-Funktionen können in .NET geschrieben werden
  • Inkrementelle SQLite-BLOB-E / A werden als .NET-Stream verfügbar gemacht, um einen hohen Speicherverbrauch zu vermeiden
  • Unterstützung für SQLite-Kollatierungen, einschließlich der Möglichkeit, benutzerdefinierte Kollatierungen mithilfe von .NET-Code hinzuzufügen
  • Unterstützung für SQLite-Volltextsuchmaschinen (FTS3), einschließlich der Möglichkeit, benutzerdefinierte FTS3-Tokenizer mithilfe von .NET-Code hinzuzufügen (z. B. lokalisierte Stoppwörter). Ich glaube nicht, dass andere .NET-Wrapper das tun.
  • Automatische Unterstützung für Windows 'winsqlite3.dll' (nur in neueren Windows-Versionen), um den Versand von binären Abhängigkeitsdateien zu vermeiden . Dies funktioniert auch in Azure-Webanwendungen!.
Simon Mourier
quelle
0

Version 1.2 von Monotouch unterstützt System.Data. Weitere Details finden Sie hier: http://monotouch.net/Documentation/System.Data

Grundsätzlich können Sie jedoch die üblichen ADO .NET-Muster mit SQLite verwenden.

user203709
quelle
0

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

dotConnect für SQLite ist ein erweiterter Datenanbieter für SQLite, der auf der ADO.NET-Technologie aufbaut und eine Komplettlösung für die Entwicklung von SQLite-basierten Datenbankanwendungen bietet. Als Teil des Entwicklungsframeworks für Devart-Datenbankanwendungen bietet dotConnect für SQLite sowohl native Hochleistungskonnektivität zur SQLite-Datenbank als auch eine Reihe innovativer Entwicklungstools und -technologien.

dotConnect für SQLite führt neue Ansätze zum Entwerfen der Anwendungsarchitektur ein, steigert die Produktivität und nutzt die Implementierung von Datenbankanwendungen.

Ich benutze die Standardversion, es funktioniert perfekt :)

Antonio
quelle
0

Ein Barebone-Wrapper der Funktionen, die von der SQLite-Bibliothek bereitgestellt werden. Die neueste Version unterstützt Funktionen der SQLite-Bibliothek 3.7.10

SQLiteWrapper-Projekt

Eminem
quelle