Delphi 如何在 FireDAC 中引用字段名称
How to quote field names in FireDAC in Delphi
我正在开发一个在多个数据库上运行的应用程序,例如,其中许多数据库都有自己的引用保留字作为字段名称的方式
例如
select `key` from mytable
或
select "key" from mytable
或
select [key] from mytable
我想知道是否有预处理器命令(或其他机制)可以自动确定用于给定数据库的正确引号字符。是的(在有人发表评论之前)我不应该对字段名称使用保留字,但架构已经预定义(几十年前)。
对于常量 SQL 命令字符串,您可以使用 {id} 标识符替换 escape sequence。用法示例:
FDQuery1.SQL.Text := 'SELECT {id Key} FROM {id MyTable}';
FDQuery1.Open;
对于代码中的赋值,您可以使用 substitution variable macros with AsIdentifier 访问器。用法示例:
FDQuery1.SQL.Text := 'SELECT &KeyCol FROM &TheTable';
FDQuery1.MacroByName('KeyCol').AsIdentifier := 'Key';
FDQuery1.MacroByName('TheTable').AsIdentifier := 'MyTable';
FDQuery1.Open;
我正在开发一个在多个数据库上运行的应用程序,例如,其中许多数据库都有自己的引用保留字作为字段名称的方式 例如
select `key` from mytable
或
select "key" from mytable
或
select [key] from mytable
我想知道是否有预处理器命令(或其他机制)可以自动确定用于给定数据库的正确引号字符。是的(在有人发表评论之前)我不应该对字段名称使用保留字,但架构已经预定义(几十年前)。
对于常量 SQL 命令字符串,您可以使用 {id} 标识符替换 escape sequence。用法示例:
FDQuery1.SQL.Text := 'SELECT {id Key} FROM {id MyTable}';
FDQuery1.Open;
对于代码中的赋值,您可以使用 substitution variable macros with AsIdentifier 访问器。用法示例:
FDQuery1.SQL.Text := 'SELECT &KeyCol FROM &TheTable';
FDQuery1.MacroByName('KeyCol').AsIdentifier := 'Key';
FDQuery1.MacroByName('TheTable').AsIdentifier := 'MyTable';
FDQuery1.Open;