我正在使用 ZeosDB 组件来访问 sqlite 数据库。它在未加密的数据库上运行良好。
在加密的数据库上,我收到:文件是否加密或不是数据库。即使我设置了密码。
我使用的 DLL 文件是否错误?我使用的是官方页面的最后一个dll。它默认不支持加密吗?
SQLite3 上有几种加密方案。
其中,您有:
sqlite3.dll
因此有助于简化部署和支持 - 它具有轻松切换到 MS SQL、Oracle 的特点或 OleDB/ODBC 与从 Delphi 5 到 XE3 的相同源代码,并且速度快;ZeosDB SQLite3 级别不处理它们。
SQlite3 API 驱动程序(单元 ZPlainSqLiteDriver)不包含密码。所以你将不得不改变它。或者切换到另一个支持加密 API 的包装器。
最近我遇到了同样的问题(使用 UniDac)。官方 DLL 不支持加密。有几个库包含加密,但它们不可互换。即用一个 SQLite DLL 加密的 DB 不能用另一个发行版解密。我认为你的情况是一样的。
我的解决方案是:
这样,DBMS 使用新的 DLL 进行加密,您的程序可以使用相同版本的 DLL 对其进行解密。
你也可以看看:
笔记: