Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
名为“的SQL表字段”;“语言”;给出SQL错误-delphi_Sql_Delphi_Insert - Fatal编程技术网

名为“的SQL表字段”;“语言”;给出SQL错误-delphi

名为“的SQL表字段”;“语言”;给出SQL错误-delphi,sql,delphi,insert,Sql,Delphi,Insert,我正在为学校建立一个应用程序,它以一种简洁和用户友好的方式显示和添加表格条目。在编程“添加新记录”部分时,我遇到了这个错误 Syntax error in INSERT INTO statement 我试图通过手动查看我输入的字段列表来修复它,发现只有一个字段出现错误,即使该字段与所有其他字段完全相同。如果我故意把字段拼错了,我会得到另一个错误。我的代码如下所示: with dmInfo do begin qryInfo.SQL.Clear; qryInfo.SQL.Add('INSE

我正在为学校建立一个应用程序,它以一种简洁和用户友好的方式显示和添加表格条目。在编程“添加新记录”部分时,我遇到了这个错误

Syntax error in INSERT INTO statement
我试图通过手动查看我输入的字段列表来修复它,发现只有一个字段出现错误,即使该字段与所有其他字段完全相同。如果我故意把字段拼错了,我会得到另一个错误。我的代码如下所示:

with dmInfo do
begin
  qryInfo.SQL.Clear;
  qryInfo.SQL.Add('INSERT INTO tblGymnast');
  qryInfo.SQL.Add('(GymnastID, Surname, Name, NickName, FamilyID, PosCode, CellNo, SAGFID, Photo, StartDate, BirthDate, Gender, Race, Category, IDNum, UpgrdTo, SchoolID, LevelID, TransID, DokterID, MedNum, MedID, Language)');

  qryInfo.SQL.Add(' VALUES(:GymnastID, :Surname, :Name, :NickName, :FamilyID, :PosCode, :CellNo, :SAGFID, :Photo, :StartDate, :BirthDate, :Gender, :Race, :Category, :IDNum, :UpgrdTo, :SchoolID, :LevelID, :TransID, :DokterID, :MedNum, :MedID, :Language)');

      qryInfo.Parameters.ParamByName('GymnastID').Value:= 'a';
      qryInfo.Parameters.ParamByName('Surname').Value:= 'a';
      qryInfo.Parameters.ParamByName('Name').Value:= 'a';
      qryInfo.Parameters.ParamByName('NickName').Value:= 'a';
      qryInfo.Parameters.ParamByName('FamilyID').Value:= 'a';
      qryInfo.Parameters.ParamByName('PosCode').Value:= 'a';
      qryInfo.Parameters.ParamByName('CellNo').Value:= 'a';
      qryInfo.Parameters.ParamByName('SAGFID').Value:= 'a';
      qryInfo.Parameters.ParamByName('Photo').Value:= 'a';
      qryInfo.Parameters.ParamByName('StartDate').Value:= 'a';
      qryInfo.Parameters.ParamByName('BirthDate').Value:= 'a';
      qryInfo.Parameters.ParamByName('Gender').Value:= 'a';
      qryInfo.Parameters.ParamByName('Language').Value:= 'a'; //This gives the error
      qryInfo.Parameters.ParamByName('Race').Value:= 'a';
      qryInfo.Parameters.ParamByName('Category').Value:= 'a';
      qryInfo.Parameters.ParamByName('IDNum').Value:= 'a';
      qryInfo.Parameters.ParamByName('UpgrdTo').Value:= 'a';
      qryInfo.Parameters.ParamByName('SchoolID').Value:= 'a';
      qryInfo.Parameters.ParamByName('LevelID').Value:= 'a';
      qryInfo.Parameters.ParamByName('TransID').Value:= 'a';
      qryInfo.Parameters.ParamByName('DokterID').Value:= 'a';
      qryInfo.Parameters.ParamByName('MedNum').Value:= 'a';
      qryInfo.Parameters.ParamByName('MedID').Value:= 'a';

  qryInfo.ExecSQL;
end;
请帮助我,因为我已经为此挣扎了一整天,还没有取得任何进展


“认为”

[]或“”向RDBMs表示该单词是列名而不是保留关键字。语言是SQL中的保留关键字

为了更好地衡量,我还将参数名称更改为Lang,因为您将参数分配标识为发布位置

with dmInfo do
begin
  qryInfo.SQL.Clear;
  qryInfo.SQL.Add('INSERT INTO tblGymnast');
  qryInfo.SQL.Add('(GymnastID, Surname, Name, NickName, FamilyID, PosCode, CellNo, SAGFID, Photo, StartDate, BirthDate, Gender, Race, Category, IDNum, UpgrdTo, SchoolID, LevelID, TransID, DokterID, MedNum, MedID, [Language])');

  qryInfo.SQL.Add(' VALUES(:GymnastID, :Surname, :Name, :NickName, :FamilyID, :PosCode, :CellNo, :SAGFID, :Photo, :StartDate, :BirthDate, :Gender, :Race, :Category, :IDNum, :UpgrdTo, :SchoolID, :LevelID, :TransID, :DokterID, :MedNum, :MedID, :Lang)');

      qryInfo.Parameters.ParamByName('GymnastID').Value:= 'a';
      qryInfo.Parameters.ParamByName('Surname').Value:= 'a';
      qryInfo.Parameters.ParamByName('Name').Value:= 'a';
      qryInfo.Parameters.ParamByName('NickName').Value:= 'a';
      qryInfo.Parameters.ParamByName('FamilyID').Value:= 'a';
      qryInfo.Parameters.ParamByName('PosCode').Value:= 'a';
      qryInfo.Parameters.ParamByName('CellNo').Value:= 'a';
      qryInfo.Parameters.ParamByName('SAGFID').Value:= 'a';
      qryInfo.Parameters.ParamByName('Photo').Value:= 'a';
      qryInfo.Parameters.ParamByName('StartDate').Value:= 'a';
      qryInfo.Parameters.ParamByName('BirthDate').Value:= 'a';
      qryInfo.Parameters.ParamByName('Gender').Value:= 'a';
      qryInfo.Parameters.ParamByName('Lang').Value:= 'a'; //This gives the error
      qryInfo.Parameters.ParamByName('Race').Value:= 'a';
      qryInfo.Parameters.ParamByName('Category').Value:= 'a';
      qryInfo.Parameters.ParamByName('IDNum').Value:= 'a';
      qryInfo.Parameters.ParamByName('UpgrdTo').Value:= 'a';
      qryInfo.Parameters.ParamByName('SchoolID').Value:= 'a';
      qryInfo.Parameters.ParamByName('LevelID').Value:= 'a';
      qryInfo.Parameters.ParamByName('TransID').Value:= 'a';
      qryInfo.Parameters.ParamByName('DokterID').Value:= 'a';
      qryInfo.Parameters.ParamByName('MedNum').Value:= 'a';
      qryInfo.Parameters.ParamByName('MedID').Value:= 'a';

  qryInfo.ExecSQL;
end;

哪种关系数据库管理系统?根据答案的不同,您可以通过将语言用[]括号或双引号或….括起来,向服务器表示该语言是一个列名。。。。[Language]或“Language”,就您的参数而言,它可以是名称,因此您可以将:Language更改为:Lang。您得到的实际错误是什么?对不起,rdbms是什么意思?关系数据库管理系统。e、 g.mysql、oracle、microsoft sql server等。我在本文开头给出的错误是我得到的唯一错误“为什么它首先给出错误”,因为没有[],sql引擎的解析器假设您使用的是一个特殊的sql关键字(如“SELECT”、“INSERT”等),根据sql的语法,无法有效地显示在您放置语言的位置。您关于将语言放在[]中的评论有效,但为什么只有这一条给出错误?语言是sql中的保留关键字。从中,选择,…。其他单词也是如此,因此您必须告诉SQL引擎,您将该单词作为列名而不是保留关键字引用。这是通过添加[]括号或双引号来完成的。我查看了不同来源(Microsoft网站)中的保留字,但经过进一步调查,我明白了您的观点。谢谢你的迅速帮助,非常感谢。