我有点想在 C#.Net 中使用 SQLite,但我似乎找不到合适的库。有吗?官方的?除了使用包装器之外,还有其他使用 SQLite 的方法吗?
12 回答
来自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 进行分发。”
它甚至支持单声道。
现在还有这个选项:http ://code.google.com/p/csharp-sqlite/ - SQLite 到 C# 的完整端口。
sqlite.org 的人已经接管了 ADO.NET 提供程序的开发:
从他们的主页:
这是用于 SQLite 的流行 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 支持
- 完整的实体框架支持
- 完全单声道支持
- Visual Studio 2005/2008 设计时支持
- 紧凑的框架,C/C++ 支持
已发布的 DLL 可以直接从该站点下载。
我肯定会选择System.Data.SQLite(如前所述:http ://sqlite.phxsoftware.com/ )
它与 ADO.NET (System.Data.*) 一致,并被编译为单个 DLL。没有 sqlite3.dll - 因为 SQLite 的 C 代码嵌入在 System.Data.SQLite.dll 中。一点托管的 C++ 魔法。
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 库的编译形式之外,还有 0 个依赖项。
非目标包括:
- 不是ADO.NET 实现。这不是一个完整的 SQLite 驱动程序。如果需要,请使用 System.Data.SQLite。
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。
这似乎是所有世界中最薄的,最大限度地减少了您对第三方库的依赖。如果我必须从头开始做这个项目,我会这样做。
Microsoft.Data.Sqlite
Microsoft 现在提供Microsoft.Data.Sqlite作为 .NET 的第一方 SQLite 解决方案,它作为 ASP.NET Core 的一部分提供。许可证是Apache 许可证,版本 2.0。
*免责声明:我自己还没有真正尝试过使用它,但是这里的 Microsoft Docs 上提供了一些文档,用于将它与 .NET Core 和 UWP 一起使用。
对于像我这样不需要或不想要 ADO.NET 的人,那些需要运行更接近 SQLite 的代码,但仍兼容netstandard
(.net 框架、.net 核心等)的人,我构建了一个100% 免费的开源项目SQLNado(代表“Not ADO”)在 github 上可用:
https://github.com/smourier/SQLNado
它在https://www.nuget.org/packages/SqlNado作为 nuget 提供,但也作为单个 .cs 文件提供,因此在任何 C# 项目类型中使用都非常实用。
它在使用 SQL 命令时支持所有 SQLite 功能,并且还通过 .NET 支持大多数 SQLite 功能:
- 自动类到表映射(Save、Delete、Load、LoadAll、LoadByPrimaryKey、LoadByForeignKey 等)
- 在类和现有表之间自动同步模式(表、列)
- 专为线程安全操作而设计
- 支持 Where 和 OrderBy LINQ/IQueryable .NET 表达式(该领域的工作仍在进行中),还支持排序规则
- 暴露给 .NET 的 SQLite 数据库架构(表、列等)
- SQLite 自定义函数可以用 .NET 编写
- SQLite 增量 BLOB I/O 公开为 .NET Stream 以避免高内存消耗
- SQLite 排序规则支持,包括使用 .NET 代码添加自定义排序规则的可能性
- SQLite 扩展 (.dll) 加载支持
- SQLite 全文搜索引擎 (FTS3) 支持,包括使用 .NET 代码添加自定义 FTS3 标记器的可能性(例如本地化停用词)。我不相信任何其他 .NET 包装器会这样做。
- 自动支持 Windows 'winsqlite3.dll'(仅在最近的 Windows 版本上)以避免传送任何二进制依赖文件。这也适用于 Azure Web 应用程序!
Monotouch 1.2 版包括对 System.Data 的支持。您可以在此处找到更多详细信息:http: //monotouch.net/Documentation/System.Data
但基本上它允许您将通常的 ADO .NET 模式与 sqlite 一起使用。
http://www.devart.com/dotconnect/sqlite/
dotConnect for SQLite 是 SQLite 的增强型数据提供程序,它建立在 ADO.NET 技术之上,为开发基于 SQLite 的数据库应用程序提供完整的解决方案。作为 Devart 数据库应用程序开发框架的一部分,dotConnect for SQLite 提供了与 SQLite 数据库的高性能本机连接以及许多创新的开发工具和技术。
dotConnect for SQLite 引入了设计应用程序架构的新方法,提高了生产力,并利用了数据库应用程序实施。
我用的是标准版,效果很好:)
sqlite 库提供的函数的准系统包装器。最新版本支持sqlite库3.7.10提供的功能