使用 FireDAC 将数据插入 pgsql 后,数据信息发生了变化

After insert data into pgsql With FireDAC, the data info changed

开发工具:Delphi 10.1 Berlin

在 Delphi 中使用 FireDAC:插入 ttb(x) VALUES(aaa=111&bbb=222&ccc=333);

插入前: aaa=111&bbb=222&ccc=333

但是用FireDAC插入后,字符串变为: aaa=111=222=333

也就是说,在使用FireDAC时删除了字符“&bbb”和“&ccc”。

能告诉我怎么解决吗,谢谢!

最好养成在查询中始终使用参数的习惯 (Online documentation), 因为它可以让您避免此类问题。 在您的情况下,代码应如下所示:

FDQuery1.SQL.Text:='insert into ttb (x) values(:TestData)';
FDQuery1.Params.ParamByName('TestData').AsString:='aaa=111&bbb=222&ccc=333';
FDQuery1.ExecSQL;

除了文档中提到的好处之外,如果不使用参数,您还可以避免 SQL 注入和各种其他 "nasty" 可能发生在数据库中的事情。

此外,对于更新和插入,使用 FDConnection 组件本身会更简洁。

示例:

FDConnection.ExecSQL(
  'insert into ttb (x) values(:TestData)',
  ['aaa=111&bbb=222&ccc=333'],
  [ftString]);

无需额外查询。干净简单!