FireDAC SQLITE:没有这样的 table 列:PRAGMA_TABLE_INFO
FireDAC SQLITE : No such table column :PRAGMA_TABLE_INFO
我正在使用 delphi rio 10.3 和 firedac sqlite3
构建应用程序
pragma 函数不适用于 'SELECT COMMAND' 正如我在下面尝试的那样:
procedure Tamdf.Button31Click(Sender:TObject);
begin
MyFDQuery.Open('SELECT name FROM PRAGMA_table_info("DOCM")');
ShowMessage(MyFDQuery.Fields[0].AsString);
end;
我收到错误消息:"ERROR: no such table column: PRAGMA_table_info.name"
我做错了什么?
以下代码在包含 table `MyTable' 的 Sqlite 数据库上对我来说工作正常。我不确定您使用的 SQL 是否适合在 FireDAC
中使用
procedure TForm3.Button1Click(Sender: TObject);
begin
if FDQuery1.Active then
FDQuery1.Close;
FDQuery1.Open('PRAGMA Table_Info(''MyTable'')');
end;
它returns
cid name
0 ID
1 NAME
如果不出意外,您可以使用 FireDAC 的 LocalSQL 从返回的结果集中提取 Name
。
我会看看是否可以 SELECT 使用 PRAGMA 查询 ...
此查询在 FireFox 的 Sqlite Manager 加载项中运行良好
select * from PRAGMA_table_info('mytable')
但是returns错误
no such table: PRAGMA_Table_Info'.
当由 FDQuery1 执行时。
使用 FireDAC,您可以使用 create temp table "table_info":
的解决方法
MyFDQuery.Open(
'DROP TABLE IF EXISTS table_info;' +
'CREATE TEMPORARY TABLE table_info AS SELECT * FROM pragma_table_info("DOCM");' +
'SELECT name FROM table_info');
编辑
我的环境:Delphi 10.3.2 Rio,Win32,静态链接默认SQLite 3.28.0。无特殊设置。
连接 - TFDConnection
仅:
FDConnection1.Params.DriverID := 'SQLite';
FDConnection1.Params.Database := 'D:\TMP\TEST.db';
我正在使用 delphi rio 10.3 和 firedac sqlite3
构建应用程序pragma 函数不适用于 'SELECT COMMAND' 正如我在下面尝试的那样:
procedure Tamdf.Button31Click(Sender:TObject);
begin
MyFDQuery.Open('SELECT name FROM PRAGMA_table_info("DOCM")');
ShowMessage(MyFDQuery.Fields[0].AsString);
end;
我收到错误消息:"ERROR: no such table column: PRAGMA_table_info.name" 我做错了什么?
以下代码在包含 table `MyTable' 的 Sqlite 数据库上对我来说工作正常。我不确定您使用的 SQL 是否适合在 FireDAC
中使用procedure TForm3.Button1Click(Sender: TObject);
begin
if FDQuery1.Active then
FDQuery1.Close;
FDQuery1.Open('PRAGMA Table_Info(''MyTable'')');
end;
它returns
cid name
0 ID
1 NAME
如果不出意外,您可以使用 FireDAC 的 LocalSQL 从返回的结果集中提取 Name
。
我会看看是否可以 SELECT 使用 PRAGMA 查询 ...
此查询在 FireFox 的 Sqlite Manager 加载项中运行良好
select * from PRAGMA_table_info('mytable')
但是returns错误
no such table: PRAGMA_Table_Info'.
当由 FDQuery1 执行时。
使用 FireDAC,您可以使用 create temp table "table_info":
的解决方法MyFDQuery.Open(
'DROP TABLE IF EXISTS table_info;' +
'CREATE TEMPORARY TABLE table_info AS SELECT * FROM pragma_table_info("DOCM");' +
'SELECT name FROM table_info');
编辑
我的环境:Delphi 10.3.2 Rio,Win32,静态链接默认SQLite 3.28.0。无特殊设置。
连接 - TFDConnection
仅:
FDConnection1.Params.DriverID := 'SQLite';
FDConnection1.Params.Database := 'D:\TMP\TEST.db';