我尝试了这段代码

source := 'prénom';
FDQuery4.SQL.Add ('INSERT INTO  name(:pSource) Values ("kkkkk")');
FDQuery4.Params.ParamByName('pSource').Value := source;
FDQuery4.execSQL;


但是它向我展示了这个例外。


  $ 75B2845D“例外”。例外类别
  EMySQLNativeException消息“ [FireDAC] [Phys] [MySQL]
  您的SQL语法错误;检查与您的手册相对应的手册
  MySQL服务器版本,可在“prénom”附近使用正确的语法)
  第1'行的值(“ kkkkk”)'。


我不明白为什么将prénom读成这样的“prénom”)

最佳答案

您不能将参数用于字段名称。
像这样执行之前构造查询

source := 'prénom';
FDQuery4.SQL.Add ('INSERT INTO  name(' + source + ') Values ("kkkkk")');
FDQuery4.execSQL;


更好的是使用参数来获得价值

source := 'prénom';
FDQuery4.SQL.Add ('INSERT INTO  name(' + source + ') Values (:pValue)');
FDQuery4.Params.ParamByName('pValue').Value := 'kkkk';
FDQuery4.execSQL;


根据维多利亚的建议,使用FireDAC时也可以这样做:
这确实解决了您的第一个问题。

FDQuery4.SQL.Add('INSERT INTO name (&TheColumn) VALUES ("TheValue")');
FDQuery4.MacroByName('TheColumn').AsIdentifier := 'prénom';

09-19 06:49