在使用FireDAC将数据插入pgsql后,数据信息已更改

时间:2017-04-26 07:47:51

标签: delphi firedac

开发工具:Delphi 10.1 Berlin

使用Delphi中的FireDAC:INSERT INTO ttb(x)VALUES(aaa = 111& bbb = 222& ccc = 333);

插入之前: AAA = 111&安培; BBB = 222&安培; CCC = 333

然而,在使用FireDAC插入后,字符串变为: AAA = 111 = 222 = 333

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

你能告诉我如何解决它,谢谢!

2 个答案:

答案 0 :(得分:2)

最好习惯在查询中始终使用参数 (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注入和其他各种"讨厌的"如果不使用参数,数据库可能会发生的事情。

答案 1 :(得分:0)

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

示例:

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

无需其他查询。干净简单!