我尝试了这段代码
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';