【问题标题】:Cross-platform Sqlite跨平台的 Sqlite
【发布时间】:2012-10-12 13:35:56
【问题描述】:

我正在编写一个需要在 iOS、Android、Windows Phone、WPF、Windows 8 Metro、Linux 和 Mac 上运行的应用程序。我在跨平台领域拥有大约 95% 的代码,但 UI 和某些内容显然需要针对每个平台进行专门编码。

现在,我们需要在应用程序中添加一些非常简单的数据库支持,我很想在我的代码中使用跨平台领域的 Sqlite。这可以使用任何现有的 Sqlite 包装器完成,还是我需要创建自己的?或者我应该使用几个具有相同语法的 Sqlite 包装器,并且只从我的不同 csproj 文件(每个平台)中引用不同的库?

我已阅读此 Q/A Is there a .NET/C# wrapper for SQLite?,但在阅读了一个小时后,我仍然不确定如何在所有这些平台上运行,所以我认为可能有人在我之前就已经考虑过这些事情。

【问题讨论】:

  • 对于大多数(如果不是所有)运行 .NET 的平台(即 MonoTouch,我假设您正在使用?)都有 SQLite 包装器。只需搜索您正在使用的框架和“SQLite”,然后为每个框架选择最佳选项。
  • 写完我会写我所做的。目前,我正在努力让 WPF 上的所有内容都正常工作,然后当我在其他平台上完成所有工作后,我将根据我的发现投票支持 Josh 的答案或写另一个答案。
  • 我正在寻找同样的东西。我找到了一个名为Sqlite-net 的简单ORM,它声称已经在所有平台(Android、WinRT、iOs 等)上进行了测试。我已经下载并让它运行。它使用对 Sqlite3.dll 的外部调用,并为 WinRT 和 iO 提供此 dll 的副本。

标签: c# sqlite


【解决方案1】:

我建议使用 SQLite 包装器的 Mono 版本 (http://www.mono-project.com/SQLite)。包装器本身完全用托管代码编写,您只需要为各自的环境提供 Sqlite 库。

我有一个在 linux 和 windows 上运行的 C# 项目。

您可能能够摆脱使用官方 C# 包装器 (http://system.data.sqlite.org/),但我不确定它如何处理多个平台。

【讨论】:

    【解决方案2】:

    使用 SQLite 进行跨平台 .NET/C# 开发的一些选项是:

    SQLitePCL.raw

    用于对 SQLite 进行低级(原始)访问的可移植类库 (PCL)

    SQLitePCL.raw 在 SQLite C API 之上提供了一个非常薄的 C# 包装器。 SQLitePCL.raw 公开的 API 从应用程序开发人员的角度来看是敌对的,但其设计目的是用作一个通用的可移植层,在该层上可以构建更友好的包装器。

    许可证:Apache 许可证 v2

    源码https://github.com/ericsink/SQLitePCL.raw

    Nugethttps://www.nuget.org/packages/SQLitePCLRaw.core

    平台:Xamarin.Android、Xamarin.iOS、UWP、Windows Phone 8.1、.NET 4.5、.NET 4.0、.NET 3.5、Linux、MacOS、NetStandard 1.1、Windows Phone 8(带有限制),Windows Phone 8.1 Silverlight(有限制)


    SQLitePCL.pretty

    ​​>

    SQLitePCL.raw 上的一张漂亮脸

    这个库将 SQLitePCL.raw 提供的 C like SQLiteAPI 与友好的 C# 面向对象 API 包装在一起。 SQLitePCL.pretty 具有广泛的单元测试覆盖率,并支持最新 SQLite 版本中提供的许多新功能。

    许可证:Apache 许可证 v2

    源码https://github.com/bordoley/SQLitePCL.pretty

    Nugethttps://www.nuget.org/packages/SQLitePCL.pretty

    平台:与 SQLitePCL.raw 相同


    SQLite 网络

    简单、强大、跨平台的 SQLite 客户端和 .NET 的 ORM

    SQLite-net 被设计成一个快速方便的数据库层。很容易与现有项目集成并在所有 .NET 平台上运行,使用非常简单的方法来安全地执行 CRUD 操作和查询(使用参数)并以强类型方式检索这些查询的结果。

    许可证:MIT 许可证

    源码https://github.com/praeclarum/sqlite-net

    Nugethttps://www.nuget.org/packages/sqlite-net-pcl

    平台:与 SQLitePCL.raw 相同


    Microsoft.Data.Sqlite

    System.Data.Common 接口的 SQLite 实现

    此项目是 ASP.NET Core 的一部分,由 Microsoft 维护

    许可证:Apache 许可证 v2

    源码https://github.com/aspnet/Microsoft.Data.Sqlite

    Nugethttps://www.nuget.org/packages/Microsoft.Data.SQLite

    平台:.NET Framework、Mono、.NET Core(.NET Native、CoreCLR、Windows Universal)、Xamarin(计划中)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2011-04-14
      • 2019-05-15
      • 2019-12-28
      相关资源
      最近更新 更多