【问题标题】:Syntax error(missing operator) in query expression when executing update query执行更新查询时查询表达式中的语法错误(缺少运算符)
【发布时间】:2013-10-10 00:20:05
【问题描述】:

我似乎有一个更新查询的问题,我正在尝试使用它在使用 Delphi XE2 的 MS Access 数据库中更新用户的当前详细信息。我之前问了一个问题并获得了有关保留字的帮助,但现在我似乎在此查询中遇到了另一个错误。 错误是:

Syntax error(missing operator) in query expression '?
Surname=?
Username=?
[Password]=?
Grade=?'

这是我不断收到的错误 以下是我完成的编码:

procedure TUser.UpdateUser(pFirstname, pSurname, pUsername,
  pPassword: String; pGrade, pID: Integer);
var
  sSQL : String;
begin
  opendb('QuizDB.mdb');

  DB.Close;
  DB.SQL.Add('UPDATE tblUsers SET');
  DB.SQL.Add('Firstname=:Firstname');
  DB.SQL.Add('Surname=:Surname');
  DB.SQL.Add('Username=:Username');
  DB.SQL.Add('[Password]=:Password');
  DB.SQL.Add('Grade=:Grade');
  DB.SQL.Add('WHERE ID=:ID');

  Db.Parameters.ParamByName('Firstname').Value := pFirstname;
  Db.Parameters.ParamByName('Surname').Value := pSurname;
  Db.Parameters.ParamByName('Username').Value := pUsername;
  Db.Parameters.ParamByName('Password').Value := pPassword;
  Db.Parameters.ParamByName('Grade').Value := pGrade;
  DB.Parameters.ParamByName('ID').Value := pID;
  DB.ExecSQL;
end;

其中 DB 是一个 ADOQuery 组件,ID 是数据库中的主键,并且对每条记录都是唯一的。 TUser 是我作为对象创建的类。

请帮我解决这个问题。

【问题讨论】:

  • 你见过这个:http://dev.mysql.com/doc/refman/5.0/en/update.html 和逗号分隔符吗?
  • MySQL 与 MS Access 不同。请使用适合您问题的标签,而不是仅仅添加任何类似的标签。它有助于正确组织问题,并让可能帮助您的人知道它们的存在

标签: delphi ms-access ado


【解决方案1】:

请在 SQL 添加行中使用逗号:

DB.Close;
DB.SQL.Add('UPDATE tblUsers SET');
DB.SQL.Add('Firstname=:Firstname,');
DB.SQL.Add('Surname=:Surname,');
DB.SQL.Add('Username=:Username,');
DB.SQL.Add('[Password]=:Password,');
DB.SQL.Add('Grade=:Grade');
DB.SQL.Add('WHERE ID=:ID');

【讨论】:

  • @Alladinianת 我认为他在这里得到了正确的答案。一个样本会很好的想法。
  • @Alladinian thx 警告,但这是答案......我会关心包含一个代码块作为主题样本......
  • @kobik 感谢您的编辑。我以后会认真回答这样的。
  • @kobik 我想现在很好,所以我删除了评论,谢谢提醒
  • @BenedictFerguson 请记住,您可以accept 回答对您有帮助的问题。
猜你喜欢
  • 2020-01-14
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 2018-01-29
  • 2012-11-14
相关资源
最近更新 更多