【问题标题】:Delphi: Update multiple fields of a SQLite recordDelphi:更新 SQLite 记录的多个字段
【发布时间】:2021-02-07 23:15:00
【问题描述】:

我正在使用以下代码更新特定 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

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

【问题讨论】:

  • Update EVENTS set sitename = :sitename, filename = :filename...
  • 谢谢 NolaSpeaker。这节省了我的时间。保持安全。

标签: sql sqlite delphi sql-update where-clause


【解决方案1】:

您的代码不是有效的 SQL。 update 语法如下:

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

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

【讨论】:

  • 谢谢专线小巴。 NolaSpeaker 已经给了我正确的语法
猜你喜欢
  • 2018-12-15
  • 1970-01-01
  • 2021-11-15
  • 2023-03-06
  • 2018-06-09
  • 1970-01-01
  • 2013-03-20
  • 2013-01-05
  • 2021-06-08
相关资源
最近更新 更多