Delphi 中的 FireDAC 似乎不支持 SQLite 函数 TimeDiff

问题描述 投票:0回答:1

我可以直接在支持

timediff
的SQLite中执行查询,但如果我使用
TFDQuery
,它会说不支持该功能。 我错过了什么?

更新:选择语句示例如下

SELECT timediff('now','1809-02-12');

如果我在 HeidiSQL 中运行,我会愉快地返回

+0215-09-17 00:39:18.889
。但是如果我在 TFDQuery 中运行它(通过 TFDConnection 与 SQLite DB 通信),我会得到
[FireDAC][Phys][SQLite] ERROR: no such function: timediff.

sqlite delphi firedac
1个回答
0
投票

Delphi 12.2 有一个稍微太旧的静态链接 SQLite DLL 版本。

TimeDiff
函数在 SQLite 3.43 版本中引入。这意味着您需要将 DLL 动态链接到您的应用程序。

首先下载最新版本的DLL。 然后,在您的应用程序中,删除

TFDPhysSQLiteDriverLink
。 将
DriverID
设置为某个内容(例如
SQLite347
),将
EngineLinkage
设置为
slDynamic
,将
VendorLib
设置为您之前下载的
sqlite3.dll
的完整路径。

接下来,在您的

TFDConnection
上,将 DriverName 设置为您在上面设置的
DriverID
中的名称。

uses
  FireDAC.Phys.SQLiteWrapper;

procedure TMyDataModule.DataModuleCreate(Sender: TObject);
begin
  FDPhysSQLiteDriverLink1.DriverID := 'SQLite347';
  FDPhysSQLiteDriverLink1.EngineLinkage := slDynamic;
  FDPhysSQLiteDriverLink1.VendorLib := 'Z:\Downloads\SQLite\sqlite3.dll';
  FDConnection1.DriverName := 'SQLite347';
end;
© www.soinside.com 2019 - 2024. All rights reserved.