您好我使用Firebird(2.5)作为数据库与Firedac(Delphi Seattle)合作,当我使用TFDQuery运行此查询时,不会返回任何记录:
SELECT ID FROM USERS WHERE PWD = 'êHÆ–!+'
数据库程序中与IbExpert相同的查询返回一条记录。是否有一些参数可以配置Firedac组件来解决这个问题。谢谢。
答案 0 :(得分:2)
它位于查询字符串中,它是!字符。默认情况下,查询字符串是预处理的,您必须转义常量字符,如!,& ,:,?, {或} ,否则它们将被用作特殊字符。
您最好的选择是使用参数。那将(除了其他好处)从预处理命令中删除! char:
FDQuery.SQL.Text := 'SELECT ID FROM USERS WHERE PWD = :Password';
FDQuery.ParamByName('Password').AsString := 'êHÆ–!+';
FDQuery.Open;
另一种选择是转义常量char或禁用宏预处理器。有关详细信息,请参阅Special Character Processing主题。