Delphi:更新SQLite记录的多个字段

Delphi: Update multiple fields of a SQLite record

我正在使用以下代码更新特定 SQLite 记录的多个字段(WONumber = 工单编号)

  aFDQuery.SQL.Clear;
  with aFDQuery.SQL do
    begin
      BeginUpdate;
      try
        Add('update EVENTS set (SITENAME, FILENAME, PARTS, DATERECEIVED, DATECONVERTED, REMINDER, INCOMPLETE)');
        Add('values (:site, :file, :parts, :received, :converted, :reminder, :incomplete) where (WONUMBER = :number)');
      finally
        EndUpdate;
      end;
  end;

  aFDQuery.Params.ParamByName('number').AsInteger         := Number;
  aFDQuery.Params.ParamByName('site').AsString            := ShortSiteName;
  aFDQuery.Params.ParamByName('file').AsString            := FileName;
  aFDQuery.Params.ParamByName('parts').AsString           := Parts;
  aFDQuery.Params.ParamByName('received').AsDateTime      := DateReceived;
  aFDQuery.Params.ParamByName('converted').AsDateTime     := DateConverted;
  aFDQuery.Params.ParamByName('reminder').AsBoolean       := Reminder;
  aFDQuery.Params.ParamByName('incomplete').AsBoolean     := Incomplete;

  aFDQuery.ExecSQL;
  DBConnection.Commit;

但是我得到以下错误

Error ESQLiteNativeException: while updating Tracking SQLite with: [FireDAC][Phys][SQLite] ERROR: near "values": syntax error

有什么建议吗? 该语法有什么问题? 谢谢

您的代码无效 SQL。 update 语法如下:

update events set 
  sitename      = :site,
  filename      = :file,
  parts         = :parts, 
  datereceived  = :received, 
  dateconverted = :converted, 
  reminder      = :reminder,
  incomplete    = :incomplete
where wonumber = :number

这是标准 SQL 语法,跨数据库统一实施。