You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 12开发Android应用FireDAC SQLite链接错误求助

解决Delphi 12 Android FireDAC SQLite加密异常问题

问题回顾

在Delphi 12开发Android应用时,使用FireDAC结合SQLite存储数据、FDSSecurity组件实现加密,从Delphi 11迁移后出现两类异常:

  1. 初始运行异常:[FireDAC][Phys][SQLite][sqlite3]-303. Capability is not supported
  2. 设置EngineLinkage := slFDEStatic后触发新异常:[FireDAC][Phys][SQLite]-1606. SQLite library linkage [FDEStatic] is not found

解决方案

1. 引入静态链接依赖单元

根据错误提示,必须将FireDAC.Phys.SQLiteWrapper.Stat单元纳入项目编译:

  • 打开项目主DPR文件,在uses列表末尾添加该单元:
uses
  ...,
  FireDAC.Phys.SQLiteWrapper.Stat;

也可在任意使用FireDAC的单元uses中添加,确保编译时包含静态链接库代码。

2. 调整驱动初始化逻辑

确保驱动链接配置在所有FireDAC连接组件创建之前执行,推荐在项目启动阶段初始化:

initialization
  if not Assigned(FDPhysSQLiteDriverLink) then
  begin
    FDPhysSQLiteDriverLink := TFDPhysSQLiteDriverLink.Create(nil);
    // 指定静态链接模式,适配Delphi 12+
    FDPhysSQLiteDriverLink.EngineLinkage := slFDEStatic;
  end;

finalization
  FDPhysSQLiteDriverLink.Free;

3. 适配FDSSecurity加密配置

Delphi 12静态链接的SQLite对加密逻辑有调整,需确保FDSSecurity及连接参数配置正确:

  • 确认FDSSecurity组件的DriverID设置为SQLite
  • 在FDConnection的Params中添加加密参数:
    DriverID=SQLite
    Database=your_database.db
    Encrypt=Yes
    Password=your_secure_password
    
  • 或通过代码动态设置连接参数:
    FDConnection1.Params.Clear;
    FDConnection1.Params.Add('DriverID=SQLite');
    FDConnection1.Params.Add('Database=' + TPath.Combine(TPath.GetDocumentsPath, 'app_db.db'));
    FDConnection1.Params.Add('Encrypt=Yes');
    FDConnection1.Params.Add('Password=MyAppEncryptKey123');
    FDConnection1.Open;
    

4. 检查Android编译配置

  • 确保项目Project Options > Android > Application中,目标API级别符合Delphi 12要求(推荐API 33+)
  • 确认Project Options > Delphi Compiler > Linking中,Link with Dynamic RTL未勾选(静态链接SQLite时,动态RTL易引发冲突)

验证步骤

  1. 执行Project > Clean清理项目编译缓存
  2. 重新编译并部署至Android设备/模拟器
  3. 测试数据库连接、数据读写及加密功能是否正常

内容的提问来源于stack exchange,提问作者Velson Infotech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:12:31