我有点喜欢从c#中使用SQLite。Net,但我似乎找不到合适的图书馆。有吗?官方的?除了使用包装器,还有其他方法使用SQLite吗?


当前回答

SQLite -net是一个开源的最小库,允许. net和Mono应用程序在SQLite 3数据库中存储数据。更多信息请访问维基页面。

它是用c#编写的,可以简单地编译到项目中。它最初是为iPhone上的MonoTouch设计的,但已经发展到可以在所有平台上工作(Mono for Android, . net, Silverlight, WP7, WinRT, Azure等)。

它是一个Nuget包,在那里它是第二大最受欢迎的SQLite包,截至2014年超过6万次下载。

Sqlite-net被设计成一个快速方便的数据库层。它的设计遵循以下目标:

Very easy to integrate with existing projects and with MonoTouch projects. Thin wrapper over SQLite and should be fast and efficient. (The library should not be the performance bottleneck of your queries.) Very simple methods for executing CRUD operations and queries safely (using parameters) and for retrieving the results of those query in a strongly typed fashion. Works with your data model without forcing you to change your classes. (Contains a small reflection-driven ORM layer.) 0 dependencies aside from a compiled form of the sqlite2 library.

非目标包括:

不是ADO。净的实现。这不是一个完整的SQLite驱动程序。如果需要,请使用System.Data.SQLite。

其他回答

现在还有这个选项:http://code.google.com/p/csharp-sqlite/ -一个完整的SQLite到c#的移植。

Monotouch 1.2版包含了对System.Data的支持。你可以在这里找到更多细节: http://monotouch.net/Documentation/System.Data

但基本上,它允许你在sqlite中使用常见的ADO . net模式。

对于那些像我一样不需要或不想要ADO的人。NET,那些需要运行更接近SQLite的代码,但仍然兼容netstandard (. NET framework, . NET core等)的人,我已经建立了一个100%免费的开源项目,名为SQLNado(“非ADO”),可在github:

https://github.com/smourier/SQLNado

它可以作为一个nuget在这里https://www.nuget.org/packages/SqlNado,但也可以作为一个单独的。cs文件,所以在任何c#项目类型中使用它都非常实用。

当使用SQL命令时,它支持所有SQLite特性,并且通过.NET也支持大多数SQLite特性:

Automatic class-to-table mapping (Save, Delete, Load, LoadAll, LoadByPrimaryKey, LoadByForeignKey, etc.) Automatic synchronization of schema (tables, columns) between classes and existing table Designed for thread-safe operations Where and OrderBy LINQ/IQueryable .NET expressions are supported (work is still in progress in this area), also with collation support SQLite database schema (tables, columns, etc.) exposed to .NET SQLite custom functions can be written in .NET SQLite incremental BLOB I/O is exposed as a .NET Stream to avoid high memory consumption SQLite collation support, including the possibility to add custom collations using .NET code SQLite extensions (.dll) loading support SQLite Full Text Search engine (FTS3) support, including the possibility to add custom FTS3 tokenizers using .NET code (like localized stop words for example). I don't believe any other .NET wrappers do that. Automatic support for Windows 'winsqlite3.dll' (only on recent Windows versions) to avoid shipping any binary dependency file. This works in Azure Web apps too!.

我肯定会选择System.Data.SQLite(如前所述:http://sqlite.phxsoftware.com/)

它与ADO是一致的。NET (System.Data.*),并被编译成单个DLL。没有sqlite3.dll -因为SQLite的C代码嵌入在System.Data.SQLite.dll中。一点托管的c++魔法。

Mono带有一个包装。https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0提供了以.net友好的方式包装实际SQLite dll (http://www.sqlite.org/sqlite-shell-win32-x86-3071300.zip在下载页面http://www.sqlite.org/download.html/上找到)的代码。它可以在Linux或Windows上运行。

这似乎是所有世界中最薄的,可以最大限度地减少对第三方库的依赖。如果我必须从头开始做这个项目,我就会这样做。