Firedac select 使用 Firebird returns 没有记录

Firedac select working with Firebird returns no records

你好,我正在使用 Firebird (2.5) 作为数据库与 Firedac(Delphi 西雅图)合作,当我 运行 使用 TFDQuery 进行此查询时,没有记录 return编辑:

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

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

它在查询字符串中并且是 ! 字符。默认情况下,查询字符串是经过预处理的,您必须转义常量字符,例如 !&: , ?, {}, 否则它们被用作特殊字符.

最好的选择是使用参数。这将(除了其他好处)从预处理命令中删除 ! 字符:

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

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