【问题标题】:FireDAC SQLite encryption on OS XOS X 上的 FireDAC SQLite 加密
【发布时间】:2017-04-19 17:21:28
【问题描述】:

尝试将包括 SQLite 数据加密在内的有效 Win32 项目移植到 OS X,我发现了一个问题。

该项目是使用 RAD Studio Berlin 10.1 和 C++ Builder 特性开发的。它包括组件 FDSQLiteSecurity。使用 Delphi 个性也会出现此问题。

单元包含:

TDFConnection *FDConnection1;
TFDPhysSQLiteDriverLink *FDPhysSQLiteDriverLink1;
TFDSQLiteSecurity *FDSQLiteSecurity1;

这是我的一段代码:

String DatabaseName, Password;
...
#ifdef WIN32
  DatabaseName = "C:\\...\\MyDB.db";
#endif
#ifdef MACOS
  DatabaseName = "/.../MyDB.db";
#endif
Password = "mypassword";
...
FDConnection1->Params->Values["Database"] = DatabaseName;
FDSQLiteSecurity1->Database = DatabaseName;
FDSQLiteSecurity1->Password = Password;
FDConnection1->Params->Values["Password"] = Password;    
FDConnection1->Connected = true;
...

在 OS X 上,连接会引发 EAccessViolation。

程序通过删除安全管理行,使用非加密文件正常工作。

提前感谢您的任何建议!

【问题讨论】:

  • 除了 EAccessViolation 之外没有可用的信息吗?没有错误消息,没有堆栈跟踪,什么都没有?如果您在FDConnection1->Params-Values["Database"] = DatabaseName; 设置断点然后评估FDSQLLiteSecurity(它应该是FDSQLLiteSecurity1),调试器会告诉您什么?
  • @Ken,感谢您的回答。以下是更多信息:“项目测试引发了异常类 EAccessViolation,其中“地址 00132AAA 的访问冲突,访问地址 00132AAA”。不再报告调试错误消息。该程序可以运行到“FDConnection1->Connected = true;”。然后发生异常。此时堆栈报告“进程不可访问”。在引发异常之前评估 FDSQLLiteSecurity1,它的属性设置正确。组件名称为FDSQLLiteSecurity1,只是打字垃圾(已更正)。
  • 您能否edit 您的帖子并将该信息放入问题本身,它所属的位置,而不是埋在 cmets 中?

标签: sqlite delphi encryption c++builder


【解决方案1】:

您使用的 typename 似乎有错字: TDF连接 *FDConnection1 必须是 TFD连接 *FDConnection1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多