如何在Delphi中引用FireDAC中的字段名

如何在Delphi中引用FireDAC中的字段名,delphi,firedac,Delphi,Firedac,我正在开发一个在多个数据库上运行的应用程序,例如,许多数据库都有自己的方式引用保留字作为字段名 比如说 select `key` from mytable 或 或 我想知道是否有一个预处理器命令(或其他机制)可以自动确定用于给定数据库的正确引号字符。是的(在有人评论之前),我不应该对字段名使用保留字,但模式已经预定义(几十年前)。对于常量SQL命令字符串,可以使用{id}标识符替换。用法示例: FDQuery1.SQL.Text := 'SELECT {id Key} FROM {id MyT

我正在开发一个在多个数据库上运行的应用程序,例如,许多数据库都有自己的方式引用保留字作为字段名 比如说

select `key` from mytable


我想知道是否有一个预处理器命令(或其他机制)可以自动确定用于给定数据库的正确引号字符。是的(在有人评论之前),我不应该对字段名使用保留字,但模式已经预定义(几十年前)。

对于常量SQL命令字符串,可以使用{id}标识符替换。用法示例:

FDQuery1.SQL.Text := 'SELECT {id Key} FROM {id MyTable}';
FDQuery1.Open;
FDQuery1.SQL.Text := 'SELECT &KeyCol FROM &TheTable';
FDQuery1.MacroByName('KeyCol').AsIdentifier := 'Key';
FDQuery1.MacroByName('TheTable').AsIdentifier := 'MyTable';
FDQuery1.Open;
对于代码中的赋值,可以将宏与访问器一起使用。用法示例:

FDQuery1.SQL.Text := 'SELECT {id Key} FROM {id MyTable}';
FDQuery1.Open;
FDQuery1.SQL.Text := 'SELECT &KeyCol FROM &TheTable';
FDQuery1.MacroByName('KeyCol').AsIdentifier := 'Key';
FDQuery1.MacroByName('TheTable').AsIdentifier := 'MyTable';
FDQuery1.Open;

很好,转义序列正是我想要的。只是在启用宏预处理时要小心。确保正确转义SQL命令中的所有特殊字符(如果命令使用任何字符)。