【问题标题】:parameters FDquery delphi does not work参数 FDquery delphi 不起作用
【发布时间】:2017-05-31 08:23:27
【问题描述】:

我有以下德尔福代码:

FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('SELECT * FROM :Tablename');
FDQuery1.ParamByName('Tablename').AsString := 'tasks';
ShowMessage(FDQuery1.sql.Text);
FDQuery1.Open;

(从此链接复制:http://www.delphigroups.info/2/da/237634.html

它不起作用,因为参数未填充但保持不变。 有人知道为什么它没有被填满吗?

【问题讨论】:

  • 您不能使用参数指定表名。参数用于列值。
  • 啊,好的。谢谢。
  • 一般在运行时提供值或需要转义时使用参数。这里有一个文字值,'tasks',它只包含 ASCII 字符。即使对于列值,您也不需要为此使用参数。

标签: sql delphi parameters


【解决方案1】:

因为您通常不能在 SQL 命令中使用参数进行表名替换。不过你很幸运,FireDAC 支持预处理器宏来参数化 SQL 命令中的表名。所以你可以这样写(注意,如果你想看到你在代码中所做的命令,它必须在宏预处理之后,例如在调用Prepare之后):

FDQuery1.SQL.Text := 'SELECT * FROM &TableName';
FDQuery1.MacroByName('TableName').AsIdentifier := 'tasks';
FDQuery1.Open;

有关此类宏的详细信息,请参阅substitution variables 主题。

【讨论】:

    猜你喜欢
    • 2017-12-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多