是否有用于SQLite的.NET / C#包装器?[关闭]


267

我有点想在C#.Net中使用SQLite,但似乎找不到合适的库。有一个吗?正式的吗?除了包装器,还有其他使用SQLite的方法吗?


4
这是该问题的重复:stackoverflow.com/questions/26020/…,并且有不同的答案。
斯图尔特·约翰逊

2
实际上,我相信两个已接受的答案都链接到同一项目。
科林

Answers:


328

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。


33
这是一个老问题,但是我必须添加我的$ 0.02。System.Data.SQLite的难题。它是超精,稳定和商业级品质。最棒的是,它是100%受管代码,并已作为公共领域的源代码发布。
内森·里德利

4
只是为了保持一致性,因为人们在谈论这两者是不同的事情。在sqlite.phxsoftware.com中,您指向sourceforge.net/projects/sqlite-dotnet2进行下载。
yeyeyerman

16
此包装器不再由其原始作者开发,并且开发似乎已由SQLite本身接管。新站点位于system.data.sqlite.org,尽管目前与原始站点相比,它似乎不那么用户友好,并且正在开发中。
mikel,

5
@NathanRidley-您确定对其100%进行管理,因为此答案表示“ System.Data.SQLite是原始SQLite数据库引擎,而完整的ADO.NET 2.0提供程序都集成到了一个混合模式程序
集中

2
仅供参考,我尝试使用Microsoft的Microsoft.Data.Sqlite .NET Standard Nuget程序包,但在AsyncPoco Github库中的少数集成测试中失败了。切换到System.Data.SQLite后,一切运行正常。
Lee Grissom



15

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

他们的主页

这是流行的用于SQLite的ADO.NET 4.0适配器(称为System.Data.SQLite)的分支。System.Data.SQLite的创建者Robert Simpson意识到了这一分叉,已经表示了他的赞同,并拥有对新Fossil存储库的提交特权。SQLite开发团队打算维持System.Data.SQLite的发展。

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

功能的完整列表可以在其Wiki上找到。重点包括

  • ADO.NET 2.0支持
  • 完整的实体框架支持
  • 完全单声道支持
  • Visual Studio 2005/2008设计时支持
  • 紧凑框架,C / C ++支持

可以从站点直接下载已发布的DLL 。


现成的DLL现在可用
zomf

8

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

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


链接当前为404
SqlACID

7

sqlite-net是一个开放源代码的最小库,它允许.NET和Mono应用程序将数据存储在SQLite 3数据库中Wiki页面上有更多信息。

它是用C#编写的,旨在与您的项目一起简单地进行编译。它最初设计为可与iPhone上的MonoTouch一起使用,但已成长为可在所有平台(适用于Android的Mono,.NET,Silverlight,WP7,WinRT,Azure等)上使用。

它以Nuget软件包的形式提供,截至2014年,它是第二受欢迎的SQLite软件包,下载量超过60,000。

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

  • 与现有项目和MonoTouch项目集成非常容易。
  • SQLite的薄包装器,应该是快速而有效的。(该库不应成为查询的性能瓶颈。)
  • 非常简单的方法,可以安全地执行CRUD操作和查询(使用参数),并以强类型方式检索这些查询的结果。
  • 使用数据模型,而不必强迫您更改类。(包含一个小的反射驱动的ORM层。)
  • 除了sqlite2库的已编译形式外,还存在0个依赖项。

非目标包括:

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

我注意到2014年之前的大多数评论都提到了System.Data.SQLite,我尝试将其安装在Windows Store App中(无法正常工作)。Sqlite-net有效。
JeeShen Lee

2

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

这似乎是世界上最薄的,可以最大程度地减少对第三方库的依赖。如果我必须从头开始做这个项目,这就是我要做的方式。



2

对于像我这样不需要或不希望使用ADO.NET的人,需要在更接近SQLite的地方运行代码但仍兼容netstandard(.net框架,.net核心等)的人,我建立了一个在github上有一个名为SQLNado的 100%免费开源项目(用于“ Not ADO”),可在github上找到:

https://github.com/smourier/SQLNado

它可以在此处https://www.nuget.org/packages/SqlNado中作为nuget使用,但也可以作为单个.cs文件使用,因此在任何C#项目类型中使用都非常实用。

使用SQL命令时,它支持所有SQLite功能,并且还通过.NET支持大多数SQLite功能:

  • 自动类到表的映射(保存,删除,加载,LoadAll,LoadByPrimaryKey,LoadByForeignKey等)
  • 在类和现有表之间自动同步架构(表,列)
  • 专为线程安全操作而设计
  • 支持LINQ / IQueryable和.ByBy的LINQ / IQueryable .NET表达式(该领域的工作仍在进行中),还支持排序规则
  • 暴露给.NET的SQLite数据库架构(表,列等)
  • 可以在.NET中编写SQLite自定义函数
  • SQLite增量BLOB I / O作为.NET流公开,以避免大量内存消耗
  • SQLite排序规则支持,包括使用.NET代码添加自定义排序规则的可能性
  • SQLite全文本搜索引擎(FTS3)支持,包括使用.NET代码(例如本地化停用词)添加自定义FTS3标记程序的可能性。我不相信任何其他.NET包装器都能做到。
  • 自动支持Windows'winsqlite3.dll'(仅在最新的Windows版本上),以避免附带任何二进制依赖文件。这也适用于Azure Web应用程序!


0

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

dotConnect for SQLite是SQLite的增强型数据提供程序,它基于ADO.NET技术提供了用于开发基于SQLite的数据库应用程序的完整解决方案。作为Devart数据库应用程序开发框架的一部分,dotConnect for SQLite提供了与SQLite数据库的高性能本机连接以及许多创新的开发工具和技术。

dotConnect for SQLite引入了用于设计应用程序体系结构的新方法,可以提高生产率并利用数据库应用程序实现。

我使用标准版本,效果很好:)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.