使用Firebird的Firedac选择不返回任何记录

时间:2017-04-18 07:19:15

标签: delphi firebird firebird2.5 firedac

您好我使用Firebird(2.5)作为数据库与Firedac(Delphi Seattle)合作,当我使用TFDQuery运行此查询时,不会返回任何记录:

SELECT ID FROM USERS WHERE PWD = 'êHÆ–!+'

数据库程序中与IbExpert相同的查询返回一条记录。是否有一些参数可以配置Firedac组件来解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:2)

它位于查询字符串中,它是字符。默认情况下,查询字符串是预处理的,您必须转义常量字符,如& {} ,否则它们将被用作特殊字符。

您最好的选择是使用参数。那将(除了其他好处)从预处理命令中删除 char:

FDQuery.SQL.Text := 'SELECT ID FROM USERS WHERE PWD = :Password';
FDQuery.ParamByName('Password').AsString := 'êHÆ–!+';
FDQuery.Open;

另一种选择是转义常量char或禁用宏预处理器。有关详细信息,请参阅Special Character Processing主题。