Delphi SQLite Wrapper 具有静态链接和加密支持

Posted

技术标签:

【中文标题】Delphi SQLite Wrapper 具有静态链接和加密支持【英文标题】:Delphi SQLite Wrapper with Static Linking and Encryption support 【发布时间】:2014-04-20 21:37:06 【问题描述】:

我需要一个 SQLite 包装器,它支持静态链接并且至少有一些基本的加密支持(也最好是免费的)

总结一下我目前的发现

ZeosLib - 支持加密。不支持静态链接。

AduCom - 网站大部分都关闭了

AnyDAC - 找不到 AnyDAC 的任何定价或购买链接,因为它已被 Embarcadero 购买并转向 FireDAC?

LiteDAC - 提供静态链接。标准版(约 130 美元)不提供加密。专业版(约 200 美元)

DISQLite3 - 支持静态链接和加密。免费供个人使用(功能有限)。专业(~150 欧元)

Synopse mORMot - 支持静态链接。不确定加密。但我无法理解这个框架。 ORM、SOA、UI、PDF、SQLite 组合成一个庞大的框架。现在我不知道如何只使用带有静态链接的 SQLite 部分。似乎有一些解释 https://***.com/a/4971398/605027 但我不确定它是否仍然适用。

到目前为止我发现的最好的包装器是SQLite3-Delphi-FPC。非常简约且易于使用。理想情况下,我想继续使用具有 Synopse 的静态链接功能和某种基本加密的相同包装器。关于如何实现这一点的任何指针?

P.S.我不想在资源中嵌入 sqlite3.dll 并在执行期间动态加载它。

注意关于这个话题有很多问题,因此也有很多困惑。所以我觉得有必要发布一个新问题

【问题讨论】:

【参考方案1】:

我在所有最新项目中都使用 Synopse mORMot。它是免费开源的,得到了​​论坛作者的大力支持。支持 SQLite DLL 的静态链接和 AES 加密。此外,您可以通过 HTTP 协议在服务器/客户端应用程序上使用它。是的,框架很大,有很多功能,但你不需要全部使用。我在我的应用程序中只使用了一小部分,没有任何问题。 开始可能有点复杂(我不是 Delphi 专家),但在此之后您的可能性是无限的。

【讨论】:

加密自 2010 年起可使用 mORMot 的 sqlite3 单元。见blog.synopse.info/post/2010/03/14/… 另见blog.synopse.info/post/2013/02/25/Using-external-MinGW/… 我下载了最新版本的 mORMot,它不包含任何名为 SynSQLite3Static.pas 的文件,如该博客文章中所述。如何让 SQLite 静态链接? 从“时间轴”菜单下载最新版本,你会发现 SynSQLite3Static.pas,当前的“beta”版本与上一个稳定版本有点不同。然而,“时间线”版本运行良好。【参考方案2】:

可能不再需要为 SQLite 使用 3rd 方包装器。

在 Delphi XE3 中,Embarcadero 使用 dbExpress 和 FireDAC 框架添加了对 SQLite 的直接支持。然后在 Delphi XE5 中,他们增强了这一点,并通过 FireDAC 库添加了对 SQLite 的全面支持,其中甚至包括“智能”数据类型识别。

FireDAC 现在是 the recommended Database Access Library for Delphi,取代 dbExpress 和其他人。

Embarcadero docwiki 文章的最后一部分:Using SQLite with FireDAC 说明了如何使用 FireDAC SQLite API 包装类,如果您需要获得最大的 SQLite 数据访问性能,FireDAC SQLite 驱动程序会使用该包装类。

【讨论】:

【参考方案3】:

我曾经写过一个简单的 sqlite3.dll 包装器,因为我在现有解决方案中也没有找到我需要的东西:TSQLite。

我读到here,你可以编译一个带有加密的专用 sqlite3.dll,和/或(?)需要使用sqlite3_activate_seesqlite3_key_v2,但我没有在我的包装器中写这些(可能是因为这个使我的包装器在默认的 sqlite3.dll 上失败)。如果这是您需要的,从 sqlite3.h 翻译并不难,并且当前的 SQLite.pas 有大量示例。

【讨论】:

以上是关于Delphi SQLite Wrapper 具有静态链接和加密支持的主要内容,如果未能解决你的问题,请参考以下文章

编译在arm板上使用的sqlite3的静动态库

SQLite wrapper

delphi Sqlite

与 SQlite 一起使用的 Delphi 组件

delphi上用啥控件访问SQLITE的速度最快

SQLite 库可以嵌入(链接)到 Delphi 可执行文件吗?