开发工具: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”。
你能告诉我如何解决它,谢谢!
答案 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]);
无需其他查询。干净简单!