首页 > 解决方案 > FireDAC SQLITE:没有这样的表列:PRAGMA_TABLE_INFO

问题描述

我正在使用带有 fireac sqlite3 的 delphi rio 10.3 构建应用程序

我在下面尝试时,编译指示函数不能与“选择命令”一起使用:

procedure Tamdf.Button31Click(Sender:TObject);
begin
   MyFDQuery.Open('SELECT name FROM PRAGMA_table_info("DOCM")');
   ShowMessage(MyFDQuery.Fields[0].AsString);
end;

我收到错误消息:“错误:没有这样的表列:PRAGMA_table_info.name”我做错了什么?

标签: delphifiredac

解决方案


以下代码在包含表“MyTable”的 Sqlite 数据库上工作正常。我不确定您使用的 SQL 是否适合在 FireDAC 中使用

procedure TForm3.Button1Click(Sender: TObject);
begin
  if FDQuery1.Active then
    FDQuery1.Close;
  FDQuery1.Open('PRAGMA Table_Info(''MyTable'')');
end;

它返回

 cid    name
 0       ID
 1       NAME

如果不出意外,您可以使用 FireDAC 的 LocalSQLName从返回的结果集中提取。

我会看看我是否可以让 SELECT 与 PRAGMA 查询一起工作......

此查询在 FireFox 的 Sqlite Manager 加载项中运行良好

select * from PRAGMA_table_info('mytable')

但返回错误

没有这样的表:PRAGMA_Table_Info'。

当由 FDQuery1 执行时。


推荐阅读