有没有一个针对SQLite的.NET/C#封装器?

271

我想在C#.Net中使用SQLite,但是我找不到合适的库。有官方的库吗?除了包装器,还有其他使用SQLite的方法吗?


4
这是一个问题的重复:https://dev59.com/CnVD5IYBdhLWcg3wTJvF,但有不同的答案。 - Stewart Johnson
2
实际上,我相信两个被接受的答案链接到同一个项目。 - Paul
12个回答

330

来自https://system.data.sqlite.org:

System.Data.SQLite是SQLite的一个ADO.NET适配器。

System.Data.SQLite由Robert Simpson开始。Robert仍然有此存储库的提交权限,但不再是活跃贡献者。开发和维护工作现在主要由SQLite开发团队执行。SQLite团队致力于长期支持System.Data.SQLite。

"System.Data.SQLite是原始的SQLite数据库引擎和完整的ADO.NET 2.0提供程序,全部包含在单个混合模式程序集中。它是原始sqlite3.dll的完全替代(甚至可以将其重命名为sqlite3.dll)。与普通混合程序集不同的是,它没有对.NET运行时的链接器依赖,因此可独立于.NET分发。"

它甚至支持Mono。


35
这是一个老问题,但我必须发表我的看法。System.Data.SQLite非常优秀。它非常精细、稳定且具有商业级别的质量。最重要的是,它是100%托管代码,并已发布为公共领域源代码。 - Nathan Ridley
4
为了保持一致性,因为人们将它们视为不同的东西。在sqlite.phxsoftware.com上,您将被引导到sourceforge.net/projects/sqlite-dotnet2进行下载。 - yeyeyerman
17
这个包的原作者已经停止开发,似乎由 SQLite 本身接管了开发工作。新网站位于 system.data.sqlite.org,但目前看起来与原来相比不太用户友好,更像是正在进行的工作。 - Michael Low
5
你确定它是100%托管的吗?因为这个回答说:“System.Data.SQLite是原始的SQLite数据库引擎和一个完整的ADO.NET 2.0提供程序,全部打包成一个混合模式程序集。” - logicnp
2
我尝试使用微软的Microsoft.Data.Sqlite .NET Standard Nuget包,但在AsyncPoco Github库的一些集成测试中失败了。切换到System.Data.SQLite后,一切都完美地运行了。 - Lee Grissom
显示剩余4条评论

32

26

16

来自sqlite.org的人已经接管了ADO.NET提供程序的开发:

他们的主页

这是流行的ADO.NET 4.0适配器System.Data.SQLite的一个分支。System.Data.SQLite的创始人Robert Simpson知道这个分支,表达了他的赞同,并在新的Fossil存储库上拥有提交特权。SQLite开发团队打算继续维护System.Data.SQLite。

历史版本以及原始支持论坛仍可在http://sqlite.phxsoftware.com找到,但该版本自2010年4月以来没有更新。

完整功能列表可以在他们的wiki上找到。亮点包括

  • ADO.NET 2.0支持
  • 完整的Entity Framework支持
  • 完整的Mono支持
  • Visual Studio 2005/2008设计时支持
  • Compact Framework、C/C++支持

发布的DLL可以直接从该网站下载。


现在可以使用现成的DLL了。 - zomf

8

SQLite-net是一个开源的、极简的库,允许.NET和Mono应用程序在SQLite 3数据库中存储数据。更多信息请参见wiki页面

它是用C#编写的,并且旨在与您的项目一起简单编译。它最初是为在iPhone上使用的MonoTouch而设计的,但现在已经发展到可以在所有平台上使用(Mono for Android,.NET,Silverlight,WP7,WinRT,Azure等)。

它作为Nuget包提供,截至2014年,它是第二受欢迎的SQLite包,已经被下载了超过60,000次。

sqlite-net被设计为快速方便的数据库层。其设计遵循以下目标:

  • 非常容易与现有项目和MonoTouch项目集成。
  • 对SQLite进行薄封装,应该快速高效。(该库不应该是查询性能瓶颈。)
  • 执行CRUD操作和安全查询(使用参数)以及以强类型方式检索这些查询结果的非常简单的方法。
  • 适用于您的数据模型,而不强迫您更改类。(包含一个小型的反射驱动ORM层。)
  • 除了sqlite2库的已编译形式之外没有任何依赖关系。

非目标包括:

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

我注意到2014年之前的大部分评论都提到了System.Data.SQLite,我尝试在我的Windows Store应用程序上安装它(但没有成功)。Sqlite-net可以使用。 - JeeShen Lee

8

我一定会选择 System.Data.SQLite(如先前提到的:http://sqlite.phxsoftware.com/)。

它与 ADO.NET (System.Data.*) 兼容,并编译为单个 DLL。不需要 sqlite3.dll - 因为 SQLite 的 C 代码嵌入在 System.Data.SQLite.dll 中。这是一种受控 C++ 魔法。


链接目前为 404。 - SqlACID

3

Microsoft.Data.Sqlite

微软现在提供了 Microsoft.Data.Sqlite 作为.NET的第一方SQLite解决方案,该解决方案作为ASP.NET Core的一部分提供。许可证是Apache License,Version 2.0

* 免责声明:我自己还没有尝试使用过这个,但是Microsoft Docs提供了一些文档,这里可以用于.NET Core和UWP。


2

2
对于像我这样不需要或者不想使用ADO.NET的人来说,需要在接近SQLite的位置运行代码,但仍然兼容netstandard(.net framework,.net core等)的人,我建立了一个100%免费的开源项目,称为SQLNado(代表"Not ADO"),在github上可以找到它: https://github.com/smourier/SQLNado 它是作为nuget提供的: https://www.nuget.org/packages/SqlNado ,但也作为单个.cs文件提供,因此在任何C#项目类型中都非常实用。
当使用SQL命令时,它支持所有SQLite功能,并且还通过.NET支持大多数SQLite功能:
- 自动类到表映射(Save,Delete,Load,LoadAll,LoadByPrimaryKey,LoadByForeignKey等) - 类和现有表之间模式(表,列)的自动同步 - 为线程安全操作而设计 - 支持Where和OrderBy LINQ / IQueryable .NET表达式(该领域仍在进展中),同时支持排序规则 - SQLite数据库模式(表,列等)公开给.NET - 可以使用.NET编写SQLite自定义函数 - SQLite增量BLOB I/O作为.NET流公开,以避免高内存消耗 - SQLite排序规则支持,包括使用.NET代码添加自定义排序规则的可能性 - 支持SQLite扩展名(.dll)加载 - 支持SQLite全文搜索引擎(FTS3),包括使用.NET代码添加自定义FTS3标记生成器的可能性(例如本地化停用词)。我不认为其他任何.NET封装都能做到这一点。 - 自动支持Windows“winsqlite3.dll”(仅在最近的Windows版本中)以避免发布任何二进制依赖文件。这也适用于Azure Web应用程序!

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接