【问题标题】:Syntax Error with Query查询语法错误
【发布时间】:2013-10-08 18:16:03
【问题描述】:

我想在 Delphi XE2 中使用 Insert Into 查询将用户信息插入 MS Access 数据库。问题是我一直收到同样的错误:

INSERT INTO 语句中的语法错误

我做了一些研究,但没有明确的答案。我的源代码是:

  opendb('QuizDB.mdb');

  DB.Close;
  DB.SQL.Add('INSERT INTO tblUsers');
  DB.SQL.Add('(FirstName,Surname,Username,Password,Grade)');
  DB.SQL.Add('Values (:Firstname, :Surname, :Username, :Password, :Grade)');

  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.ExecSQL;

QuizDB 是数据库名称,DB 是 ADOQuery 组件,然后 p(var) 是作为参数接收的变量。

如何让它发挥作用?

【问题讨论】:

    标签: sql delphi ms-access delphi-xe2


    【解决方案1】:

    PASSWORD 是 Access 中的 reserved word,因此如果将其用作列名,则必须将其括在方括号中。

    试试这个:

    DB.SQL.Add('INSERT INTO tblUsers ');
    DB.SQL.Add('(FirstName,Surname,Username,[Password],Grade) ');
    

    【讨论】:

    • 非常感谢。我需要做的就是添加这些括号。
    • 关于这个陷阱的问题肯定有近百个。
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 2017-02-25
    • 2014-01-17
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多