FireDAC无法识别查询参数
问题描述:
我有以下的数组保存SQL语句的行:FireDAC无法识别查询参数
SQLQueryLines : array [00..04] of string =
('select "Costumer"."Name", ',
'"Costumer"."Age", ',
'"Costumer"."Gender" '
'from "Costumer" '
'where "Costumer"."Name" = :aCostumerName');
在运行时,我做了如下分配:
Query.SQL.Add (SQLQueryLines [0]);
Query.SQL.Add (SQLQueryLines [1]);
Query.SQL.Add (SQLQueryLines [2]);
Query.SQL.Add (SQLQueryLines [3]);
Query.SQL.Add (SQLQueryLines [4]);
但FireDAC未能识别参数“aCostumerName”。
然而,它承认该参数如果我直接分配:
Query.SQL.Add ('select "Costumer"."Name", ');
Query.SQL.Add ( '"Costumer"."Age", ',);
Query.SQL.Add ( '"Costumer"."Gender" ');
Query.SQL.Add ('from "Costumer" ');
Query.SQL.Add ('where "Costumer"."Name" = :aCostumerName');
查询是TFDQuery。
我不明白为什么FireDAC应该处理不同的上述任务,我没有找到任何帮助搜索Web。任何人都有这个问题的答案?谢谢
答
字符串数组和字符串填充字符串列表集合和常量之间没有区别。但是你的第二个发布的代码甚至不会编译(因为第二行的最后一个逗号)。因此,请尽量确保您没有以某种方式修改实际代码中的查询。
Btw。您可以简化填补这一集合与循环:
var
Line: string;
begin
for Line in SQLQueryLines do
Query.SQL.Add(Line);
end;
还是中老年德尔福这样的:
var
Index: Integer;
begin
for Index := Low(SQLQueryLines) to High(SQLQueryLines) do
Query.SQL.Add(SQLQueryLines[Index]);
end;
嗨Victoria.Appreciated您的评论。这个问题是前段时间发布的。事实上,我发现并纠正了流量,但说实话,我不记得它是什么。总之,谢谢你的帮助。 – user2383818
@ user2383818,绝对不是与从常量数组填充SQL查询字符串列表集合和字符串常量之间的差异相关的东西:) – Victoria