加载SQLite3.dll时发生Delphi FireDAC错误



我已经从SQLite下载页面下载了最新的SQLite.dll,并尝试使用TFDPhysDriverLink.VendorLib 加载它

但当我运行该应用程序时,它包含以下代码:

procedure TForm1.FormCreate(Sender: TObject);
begin
FDConnection1.Close;
FDPhysSQLiteDriverLink1.Release;
FDPhysSQLiteDriverLink1.VendorLib:= 'PathSQLite3.dll';
FDQuery1.Open('SELECT *, ROW_NUMBER() OVER() Col FROM TableName');
end;

它抛出:

[FireDAC][Phys][SQLite]错误:接近;(":语法错误

这意味着窗口函数ROW_NUMBER()无法识别。

  • 我做错了什么
  • 如何强制FireDAC使用最新的SQLite.dll

SQLite不支持ROW_NUMBER。看看这个问题的答案,你可能会找到一些替代ROW_NUMBER的东西。

如果出现此错误,则SQlite3.dll加载得很好。

只需使用RowID字段,它始终存在于任何标准SQLite3表中——除非您使用CREATE table with ROWID语句显式创建它们。

所以我只想写:

FDQuery1.Open('SELECT *, RowID FROM TableName');

请注意,如果表中有一个显式INTEGER PRIMARY KEY列,它实际上会映射内部RowID列。请查看SQLite3文档以了解其工作原理。

最新更新