【问题标题】:Is there a .NET/C# wrapper for SQLite? [closed]SQLite 是否有 .NET/C# 包装器? [关闭]
【发布时间】:2010-09-10 18:07:23
【问题描述】:

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

【问题讨论】:

标签: c# .net database sqlite


【解决方案1】:

来自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 进行分发。”

它甚至支持单声道。

【讨论】:

  • 这是一个老问题,但我不得不加上我的 0.02 美元。 System.Data.SQLite 摇滚。它是超级精制、稳定和商业级的品质。最重要的是,它是 100% 托管代码,并已作为公共域源代码发布。
  • 只是为了保持一致性,因为人们将两者视为不同的事物。在 sqlite.phxsoftware.com 中,您将指向 sourceforge.net/projects/sqlite-dotnet2 进行下载。
  • 这个包装器不再由它的原作者开发,开发似乎已经被 SQLite 自己接管了。新站点位于 system.data.sqlite.org,但目前与原来的站点相比,它的用户友好性较差且正在进行中。
  • @NathanRidley - 你确定它是 100% 托管的吗,因为这个答案说“System.Data.SQLite 是原始的 SQLite 数据库引擎和一个完整的 ADO.NET 2.0 提供程序,所有这些都融入了单一的混合模式大会。”
  • 仅供参考,我尝试使用 Microsoft 的 Microsoft.Data.Sqlite .NET Standard Nuget 包,但它在 AsyncPoco Github 库中的一些集成测试中失败了。切换到 System.Data.SQLite 后,一切正常。
【解决方案2】:

以下是我能找到的:

来源:

【讨论】:

    【解决方案3】:

    现在还有这个选项:http://code.google.com/p/csharp-sqlite/ - SQLite 到 C# 的完整端口。

    【讨论】:

      【解决方案4】:

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

      来自their homepage

      这是流行的 ADO.NET 的一个分支 SQLite 的 4.0 适配器,称为 System.Data.SQLite。的发起人 System.Data.SQLite,罗伯特辛普森,是 意识到这个叉子,表达了他的 批准,并具有提交权限 新的化石存储库。 SQLite 开发团队打算维护 System.Data.SQLite 向前发展。

      历史版本,以及 原始支持论坛,可能仍然是 发现于 http://sqlite.phxsoftware.com,虽然 没有更新 自 2010 年 4 月以来的版本。

      可在on their wiki 找到完整的功能列表。亮点包括

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

      已发布的 DLL 可以直接从the site 下载。

      【讨论】:

      • 现成的 DLL 现已推出
      【解决方案5】:

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

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

      【讨论】:

      • 链接当前为 404
      【解决方案6】:

      sqlite-net 是一个开源的最小库,允许 .NET 和 Mono 应用程序将数据存储在 SQLite 3 databases 中。更多信息请访问wiki page

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

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

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

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

      非目标包括:

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

      【讨论】:

      • 我注意到 2014 年之前的大部分评论都说 System.Data.SQLite 我试图安装在我的 Windows 应用商店应用程序上(没有工作)。 Sqlite-net 工作。
      【解决方案7】:

      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/download.html/ 上找到的 http://www.sqlite.org/sqlite-shell-win32-x86-3071300.zip)。它适用于 Linux 或 Windows。

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

      【讨论】:

        【解决方案8】:

        Microsoft.Data.Sqlite

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

        * 免责声明:我自己还没有真正尝试过使用它,但是 Microsoft Docs here 上提供了一些文档,用于将它与 .NET Core 和 UWP 一起使用。

        【讨论】:

          【解决方案9】:

          对于像我这样不需要或不想要 ADO.NET 的人,那些需要运行更接近 SQLite 的代码,但仍然兼容 netstandard(.net 框架、.net 核心等)的人,我在 github 上构建了一个 100% 免费的开源项目,名为 SQLNado(代表“Not ADO”):

          https://github.com/smourier/SQLNado

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

          在使用 SQL 命令时支持所有 SQLite 功能,也通过 .NET 支持大部分 SQLite 功能:

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

          【讨论】:

            【解决方案10】:

            Monotouch 1.2 版包括对 System.Data 的支持。您可以在此处找到更多详细信息: http://monotouch.net/Documentation/System.Data

            但基本上它允许您将通常的 ADO .NET 模式与 sqlite 一起使用。

            【讨论】:

              【解决方案11】:

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

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

              dotConnect for SQLite 引入了用于设计应用程序架构、提高生产力并利用数据库应用程序实施的新方法。

              我用的是标准版,效果很好:)

              【讨论】:

                【解决方案12】:

                sqlite 库提供的函数的准系统包装器。最新版本支持sqlite库3.7.10提供的功能

                SQLiteWrapper project

                【讨论】:

                  猜你喜欢
                  • 2023-03-18
                  • 1970-01-01
                  • 2010-09-26
                  • 1970-01-01
                  • 2010-09-10
                  • 1970-01-01
                  • 2010-10-13
                  • 2016-06-16
                  • 2012-11-12
                  相关资源
                  最近更新 更多